记录一些正则表达式笔记

494 阅读3分钟

正则表达式

正则表达式的创建

表达式元字符

字符含义
{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));