正则表达式
正则表达式的创建
表达式元字符
字符 | 含义 |
---|---|
{n} | 匹配前面的字符或者表达式,指定匹配次数为n次 |
{n,} | 匹配前面的字符或者表达式,指定匹配次数至少为n次 |
{n,m} | 匹配前面的字符或者表达式,指定匹配次数至少n次,最多m次 |
[xyz] | 字符合集,匹配里面包含的任意一个字符。例如[abcd]代表abcd中的任意一个字符,也可以用-来进行范围约束,例如[a-z]、[0-9]、[A-z]、[A-z0-9]、[A-z0-9_]、[\u4e00-\u9fa5] 等 |
[^xyz] | 匹配不包含里面字符的其他任意一个字符。例如[^abcd] 代表除了abcd以外的任意一个字符 |
\d | 匹配0-9中任意一个阿拉伯数字,相当于[0-9]。 |
\D | 匹配一个非阿拉伯数字,等价于[^0-9] 。 |
\f | 匹配一个换页符(U+000C)。 |
\n | 匹配一个换行符(U+000A)。 |
\r | 匹配一个回车符(U+000D)。 |
\s | 匹配一个空白字符,包括空格、制表符、换页符和换行符。等价于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] 。 |
\S | 匹配一个非空白字符。等价于 [^ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] 。 |
\t | 匹配一个水平制表符 (U+0009)。 |
\v | 匹配一个垂直制表符 (U+000B)。 |
\w | 匹配一个单字字符(字母、数字或者下划线)。等价于 [A-Za-z0-9_] 。 |
\W | 匹配一个非单字字符。等价于 [^A-Za-z0-9_] 。 |
正则表达式方法
字符 | 含义 |
---|---|
exec | 查找字符串中满足规则的字符串,它返回一个数组(未匹配到则返回 null)。每次只匹配一个,其会返回lastIndex来表示下一个匹配的起始索引值,当我们再次执行exec时,自动从这里开始继续搜索,知道为null为止 |
test | 测试字符串是否匹配规则,它返回 true 或 false |
高级搜索标志
字符 | 含义 |
---|---|
g | 全局搜索 |
i | 不区分大小写搜索 |
贪婪模式与非贪婪模式
贪婪模式的元字符包括:
{n,}
、{n,m}
、?
、*
、+
贪婪模式的特性:匹配尽可能多的字符
非贪婪模式的特性:匹配尽量少的字符
在贪婪模式元字符后面加上?即可将其变为非贪婪模式:
{n,}?
、{n,m}?
、??
、*?
、+?
//贪婪模式
let str = 'd131adafdae';
let reg = /d\w+/; //\w+将会匹配d之后所有的字符,有多少匹配多少
console.log(reg.exec(str));
let reg2 = /d\w+d/; //虽然\w中包含有d,但是为了使整个表达式匹配成功,\w会让出最后一个匹配的d
console.log(reg2.exec(str));
//非贪婪模式
let reg3 = /d\w+?/; //\w+?只会匹配d之后的1个字符
console.log(reg3.exec(str));
let reg4 = /d\w+?d/; //尽可能少的匹配字符,为了让整个表达式匹配成功,不得不多匹配几个字符才能让后面的d匹配
console.log(reg4.exec(str));