javascript 正则表达式入门篇

2021-05-11 18:12 JavaScript知识

什么是正则表达式?

  • 正则表达式是构成搜索模式(search pattern)的字符序列。

  • 当您搜索文本中的数据时,您可使用搜索模式来描述您搜索的内容。

  • 正则表达式可以是单字符,或者更复杂的模式。

  • 正则表达式可用于执行所有类型的文本搜索和文本替换操作。

为什么要用正则表达式?

  • 与js操作字符串方法比较,正则表达式更简洁、功能更强大。

  • 可以用少量的代码来匹配复杂的内容。

  • 正则表达式比较灵活,可以应对各种复杂的需求。


创建正则表达式的两种方法


    1、对象的形式创建

const reg = new RegExp('javascript');

    2、字面量创建

const reg1 = /javascript/;


选择符     |


     | 这个符号代表选择修饰符,也就是 | 左右两侧有一个匹配到就可以。

const str = 'javascript';// 匹配 js or javascriptconst reg = /js|javascript/;console.log(reg.test(str));


字符边界   ^ $


     使用字符边界符用于控制匹配内容的开始与结束约定。

边界符
说明
^
匹配开始内容
$
匹配结束内容
const js = "javascript";// 匹配开始是java的内容console.log(/^java/.test(js)); //true// 匹配结束为script的内容console.log(/script$/.test(js)); //true


元字符


    元字符是正则表达式中的最小元素,只代表单一(一个)字符

元字符
说明
\d
匹配任意一个数字
\D
匹配除了数字任意一个字符
\w
匹配任意一个字母、数字、下划线
\W
匹配除了字母,数字或下划线外与任何字符
\s
匹配一个空白字符例如空格、\t、\n 
\S
匹配除了空白任意字符
.

匹配除换行符外的任意字符

// 使用console.log(/\d/.test('123'));// trueconsole.log(/\D/.test('abc'));// trueconsole.log(/\w/.test('abc'));// trueconsole.log(/\W/.test(' '));// trueconsole.log(/\s/.test(' '));// trueconsole.log(/\S/.test('_'));// trueconsole.log(/./.test('123abc_-'));// true

修饰符 


      正则表达式在执行时会按他们的默认执行方式进行,但有时候默认的处理方式总不能满足我们的需求,所以可以使用模式修正符更改默认方式。


修饰符
说明
i
不区分大小写
g
全局匹配内容
m
多行匹配

体验

// i'ABC456'.replace(/abc/i, '123'); // 123456// g'ABCabcabc'.replace(/abc/g, '123'); // ABC123123// m // 只有当目标字符串含有\n,而且正则表达式中含有^或$的时候,m修饰符才有作用var str = '\nabc';console.log(/^abc/m.test(str))


原子表


在一组字符中匹配某个元字符,在正则表达式中通过元字符表来完成,就是放到[] (方括号)中。


原子表
说明
[]
匹配其中一个
[^a]
匹配非a的内容
[0-9]
匹配0-9任意数字
[a-z]
匹配a-z任意字母
[A-Z]
匹配A-Z任意字母
console.log(/[ab]/.test('abc'));// trueconsole.log(/[^a]/.test('abc'));// trueconsole.log(/[0-9]/.test('123'));// trueconsole.log(/[a-z]/.test('abc'));// trueconsole.log(/[A-Z]/.test('ABC'));// true


字符串可以用正则方法


下面介绍的方法是 String 提供的支持正则表达式的方法

search

// search() 方法用于检索字符串中指定的子字符串,也可以使用正则表达式搜索,返回值为索引位置var str = "javascript.com";console.log(str.search(/com/)); // 11

match

// match 方法返回匹配到内容 返回一个数组var str = "javascript.com";console.log(str.match(/com/)); //[com]

split

//用于使用字符串或正则表达式分隔字符串,下面是使用字符串分隔日期let str = "1999-09-19";console.log(str.split(/-/)); //["1999", "09", "19"]


replace

// replace 方法不仅可以执行基本字符替换,也可以进行正则替换,下面替换日期连接符var str = "1999-09-19";console.log(str.replace(/-/g, "/")); //1999/09/19



正则方法

正则对象提供的操作方法


test

// 检测字符串是否符合正则规格 返回一个布尔值console.log(/a/.text('a'));

exac

// 检测字符串是否符合正则规格 返回一个布尔值var str = 'abcababcaaabbbccc';console.log(/a/g.exec(str));



本文章转载自公众号:gh_c9262e89a212

首页 - JavaScript 相关的更多文章: