五十二.正则表达式

125 阅读4分钟

转义字符和元字符

转义字符\,在反斜杠\后边放的紧挨着得字符被强制转化成文本

元字符是拥有特殊含义的字符,元字符也可以组合放进中括号里去使用,一个元字符代表一位

"-----实现在双引号里再放双引号

\r-----行结束符,即回车

\t-----制表符,键盘得tab键

.-----表示点.

\n-----实现换行

\s------表示空白字符

\S------表示非空白字符

\d------表示数字

\D-----表示非数字

\d\D或者\w\W-----表示任意字符

\w------常用字符(英文,数字),小写w

\W-------非常用字符(下划线,感叹号等),大写W

.--------(点号)查找单个字符,除了换行和行结束符

正则表达式

正则表达式属于字符串的相关操作,表达的意义是一种规则,在js中是一种对象。

创建语法

1.直接量

在两个斜杠中间写规则,在正则表达式得双斜杠后边还可以加字母i、g、m,表达其属性

image.png

2.构造方法RegExp()

在new RegExp("abc")函数里边也可以添加属性i、g、m

image.png

  1. 使用new操作符,可以将已经存在的正则表达式用来给函数RegExp()传参,构造新的正则表达式。两个正则对象值相同,但两个对象相互独立。

image.png

image.png

2)若去除new操作符,将已经存在的正则表达式用来给函数RegExp()传参,只是传递引用,不能构建新的正则表达式。两个标识符只是对同一个正则表达式的引用。

image.png

image.png

正则表达式的属性

i:执行匹配时忽略大小写

image.png

image.png g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

image.png

image.png m:执行多行匹配

image.png

image.png

source 字面量形式对应的字符串

image.png

image.png

lastIndex 开始搜索下一个匹配项的字符位置,默认0。lastIndex 与exec 方法相搭配使用,查找光标位置。

image.png

image.png

正则表达式的规则

1.^表示以什么开头,$表示以什么结尾

image.png

image.png

2.中括号用于查找某个范围内的字符,一个中括号代表一位,中括号里边的内容代表的是这一位可以取值的范围。

image.png

image.png

取出3个字符,第1个字符的范围是a-z,第2个字符的是c-d,第3个字符就是d。

3.^放到[]里边表示"非"

image.png

image.png

第1位不能是a,第2位不能是b

4.括号里可以加入"|"表示"或"

image.png

image.png

5.量词,表达式的n代表的是一个匹配规则,n后边符号的符号定义量词规则

image.png

image.png

n+表示{1,Infinity}个即1个以上

n*表示{0,Infinity}个即0个以上

n?表示(0,1)个即0个或1个。

6.\num 表示反引用,指的是要引用的第num个括号里的表达式值

var reg=/(\w)\1/g;//括号"()"后边的"\1"为反向引用第一个括号的值
reg=/(\w)\1\1\1/g;//3个"\1"代表后边还要引用第一个括号里的值3次
 //反斜杠 “\num”反向引用括号里的值
        var str="fafakfFAbab";
        //XYXY reg=/([a-z0-9])([a-z0-9])\1\2/
        var reg=/([a-z0-9])([a-z0-9])\1\2/gi;
        console.log(str.match(reg));
        //将匹配得到的XYXY类型的字符串,替换为XXYY类型
        //在replace中应用正则表达式,需要用“$num”表示反向应用
        console.log(str.replace(reg,"$1$1$2$2"));

image.png

位置限定条件和反斜杠意义

S(?=n):匹配任何其后紧接指定字符串n 的字符串S

S(?!=n):匹配任何其后没有紧接指定字符串n 的字符串S

 var str="7a6b2727";
        var reg=/\d(?=[a-z])/ig
        console.log(str.match(reg));

image.png

在验证特殊字符时,需要加反斜杠,在正则表达式中将其转义为普通字符

 var reg=/\d\*/;
        var str="2*3+7";
        console.log(str.match(reg));

image.png

正则表达式相关的方法

字符串的方法

1.split():可以将一个字符串拆分成一个数组。方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串,这个方法即使不指定全局匹配也会全部拆分。

2.match():找到一个或多个正则表达式的匹配。默认情况下match只会找到第一个符合正则表达式的内容,找到以后就会停止搜索,可以设置正则表达式为全局匹配模式,这样就能匹配到所有。(在正则表达式后边加上修饰符g)match会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果。

3.replace():替换与正则表达式匹配的子串。参数:第1个是被替换的内容,第2个是新的内容(如果是空串就是删除)。默认只替换第一个,可以设置正则表达式为全局匹配模式,这样就能匹配到所有。(在正则表达式后边加上修饰符g)

search():检索与正则表达式相匹配的值。搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到则返回-1。它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串,search只会查找第一个,即使设置全局匹配也没用

正则表达式的方法

1.exec():寻找字符串中是否含有检测的字符。将找到的字符按数组返回。尽管具有global属性,仍然只返回匹配到的第一个。

image.png

image.png

2.test():检测字符串中是否含有检测的字符。返回布尔值