正则表达式

一、正则表达式语法

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

① 字面量形式创建: var expression = /pattern/flags;

说明:模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。

每个正则表达式都可带有一或多个标志(flags),用以表明正则表达式的行为。g、i、m 分别用于指定全局模式、不区分大小写模式、多行模式。

② 构造函数创建:var expression = new RegExp("pattern","flags");

说明:传递给RegExp构造函数的两个参数都是字符串。在某些情况下要对模式参数进行转义。

2、元字符

正则表达式中的元字符包括: (   [   {   \   ^   $   |   )   ?   *   +   .   ]   }

这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符,就必须对它们进行转义。

元字符描述
.查找单个字符,除了换行和行结束符。
red|blue|green查找任意指定的选项。

3、方括号

方括号用于查找某个范围内的字符:

表达式描述
[abc]查找给定集合内的任意字符。
[^abc]查找给定集合外的任意字符。
[0-9]查找任意从 0 至 9 的数字。
[a-z]查找任意从小写 a 到小写 z 的字符。
[A-Z]查找任意从大写 A 到大写 Z 的字符。
[A-z]查找任意从大写 A 到小写 z 的字符。

4、转义字符

转义字符描述
\w查找单词字符(包括英文字母,数字,下划线)。
\W查找非单词字符(包括非英文字母,数字,下划线之外的字符)。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

5、量词

量词描述
n+匹配任何包含至少一个 n 的字符串。
n*匹配任何包含零个或多个 n 的字符串。
n?匹配任何包含零个或一个 n 的字符串。
n{X}匹配包含 X 个 n 的序列的字符串。
n{X,Y}匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,}匹配包含至少 X 个 n 的序列的字符串。
n$匹配任何结尾为 n 的字符串。
^n匹配任何开头为 n 的字符串。
?=n匹配任何其后紧接指定字符串 n 的字符串。
?!n匹配任何其后没有紧接指定字符串 n 的字符串。

二、RegExp实例属性

1、global:布尔值,表示是否设置了g标志。

2、ignore:布尔值,表示是否设置了i标志。

3、lastIndex:证书,表示开始搜索下一个匹配项的字符位置,从0算起。

多用于在一个字符串中进行多次匹配。

4、multiline:布尔值,表示是否设置了m标志。

5、source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

三、RegExp实例方法

1、exec():接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。

语法:RegExpObject.exec(string)

说明:返回的数组包含两个额外的属性:index和input。其中,index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串。返回的数组第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)。

在不设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息。

而在设置全局标志的情况下,每次调用exec()则都会在RegExpObject 的 lastIndex 属性指定的字符处开始查找新匹配项。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。

2、test():检索字符串中指定的值。返回 true 或 false。

语法:RegExpObject.test(string)

在不设置全局标志的情况下,lastIndex始终为0;

而在设置全局标志的情况下,lastIndex为上次匹配文本的最后一个字符的下一个位置。

3、compile(): 编译正则表达式。

compile 方法将正则表达式转换为内部的格式,从而执行得更快。例如,这允许在循环中更有效地使用正则表达式。当重复使用相同的表达式时,编译过的正则表达式使执行加速。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值