返回首页
高速
正则在线匹配网站:
https://regexr.com/
https://regex101.com/
高速
浏览器中使用正则:
可以在控制台环境输入类似:/a+/.test('abc')
知识点
大多数编程语言中如何表示正则
大多数编程语言中用右斜杠标识正则的开始和结束,如:/abc+/
编程语言中有自己的语法,比如在结束标志/g代表全局匹配(可以匹配多次) /i代表不区分大小写 也可以组合用/gi
所以当使用正则时需要遵循不同语言的语法 按照规范使用正则
知识点
限定符(用于指定匹配的次数或位置)
*:匹配前面的表达式零次或多次
+:匹配前面的表达式一次或多次
?:匹配前面的表达式零次或一次
{n}:匹配前面的表达式恰好n次
{n,}:匹配前面的表达式至少n次
{n,m}:匹配前面的表达式至少n次 最多m次
知识点
字符类元字符
\d:匹配任何数字字符,相当于[0-9]
\D:匹配任何非数字字符,相当于[^0-9]
\w:匹配任何字母数字字符,包括下划线,相当于[a-zA-Z0-9_]
\W:匹配任何非字母数字字符,不包括下划线,相当于[^a-zA-Z0-9_]
\s:匹配任何空白字符,包括空格、制表符、换行符等
\S:匹配任何非空白字符
元字符的目的是为了正则更加简洁可读
知识点
锚定符
^:单独使用代表匹配第一个字符 如^a 匹配abc a
$:单独使用代表匹配最后一个字符 如c$ 匹配abc dc c
知识点
限定符+示例
abc+ 表示字母c出现一次或多次。能匹配上的有abc abcc abccc
(ab)+ 表示ab出现一次或多次。能匹配上的有abc ababc fabababe
知识点
"或"用|表示
abc|ef 表示abc或ef
a(bc|ef) 表示abc或aef
知识点
[]表示取值的范围,[]内的任意字符匹配都代表匹配成功
[abc] 表示包含任意个a或任意个b或任意个c 如:aef abcd b
[^abc] 固定语法 只能第一个字符为^ 表示不包含a且不包含b且不包含c 但包含制表符、空格等
知识点
.表示匹配任意单个字符(换行符除外)
. 表示匹配任意字符 a abc def
知识点
限定符?可以从贪婪匹配调整为惰性匹配
如需要匹配html标签:
This is a book
正则为<.+?>这里面的?相当于限制的+的作用范围 当匹配到第一个标签时就停止了 否则没有?会匹配整段字符
知识点
\b表示表示字符边界 表示字符到此为止不能再有内容
如 abc\b 能匹配 abc 但不能匹配abcd
\b也可以放在开头
知识点
修饰符i :执行对大小写不敏感的匹配
e.g : 待匹配字符: i was a abc bug ABC is not
正则:/aBc/i
结果:匹配第一个出现的abc
知识点
修饰符g: 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
e.g : 待匹配字符: i was a abc bug ABC is not
正则:/aBc/gi
结果:匹配两个出现的abc
知识点
修饰符m: 执行多行匹配
如果目标字符串中不含有换行符\n,即只有一行,那么/m修饰符没有任何意义。
如果正则表达式中不含有^或$匹配字符串的开头或结尾,那么/m修饰符没有任何意义。
只有当目标字符串含有\n,而且正则表达式中含有^或$的时候,/m修饰符才有作用。
知识点
量词n+: 匹配任何包含至少一个 n 的字符串。
e.g : 待匹配字符: i was a abc bug AbbbC
正则:/b+/
结果:匹配bbb
知识点
量词n*: 匹配任何包含零个或多个 n 的字符串。多跟修饰符g,否则匹配0个相当于没有
e.g : 待匹配字符: i was a abc bug AbbbC
正则:/b*/g
结果:匹配abc中的b 匹配abbbc中的bbb 注意若不加g则匹配不上
知识点
量词n?: 匹配任何包含零个或一个 n 的字符串。多跟修饰符g,否则匹配0个相当于没有
e.g : 待匹配字符: i was a abbbc bug
正则:/b?/g
结果:匹配abbbc中的bbb 匹配bug中的b 注意若不加g则匹配不上
知识点
量词^n: 匹配任何开头为 n 的字符串。
e.g : 待匹配字符:
i was a abbbc bug ABC is not
the ABC
i was a newer
正则:/^i/g
结果:只能匹配第一行的i ,如果想匹配第三行的i需要加m,即:/^i/gm
知识点
量词n$: 匹配任何结尾为 n 的字符串。
e.g : 待匹配字符:
i was a abbbc bug ABC is not
the ABC
i was a newet
正则:/t$/g
结果:只能匹配第三行的t ,如果想匹配第一行的t需要加m,即:/t$/gm
知识点
方括号:[abc] 查找方括号之间的任何字符。
e.g : 待匹配字符:
i was a bug
正则:/[abc]/g
结果:匹配was中的a,a中的a,bug中的b
.
知识点
方括号:[^abc] 查找任何不在方括号之间的字符。
e.g : 待匹配字符:
i was a bug
正则:/[^abc]/g
结果:匹配i中的i,was中的w、s,bug中的u、g
知识点
方括号:[0-9] 查找任何从 0 至 9 的数字。
e.g : 待匹配字符:
i was a bug 1011
正则:/[0-9]/g
结果:匹配1011
知识点
方括号:[a-z] 查找任何从小写 a 到小写 z 的字符。
e.g : 待匹配字符:
i was a bug 1011
正则:/[a-z]/g
结果:匹配i,was,a,bug
知识点
圆括号:(bug|ab) 以|分隔,查找任何指定的选项。
e.g : 待匹配字符:
i was a bug 1011_ &
abcd
正则:/(bug|ab)/g
结果:匹配第一行bug,第二行ab
知识点
元字符:\w 查找数字、字母及下划线。
e.g : 待匹配字符:
i was a bug 1011_ &
abcd
正则:/\w/g
结果:除了&都匹配