正则表达式
/./g 任意字符 (包括空格,但是断行不会匹配)
/\w/g 字母数字下划线
/\W/g 非字母和数字下划线
匹配数字:
/\d/g 匹配阿拉伯数字
/\D/g 匹配所有不是数字,包括空格
匹配空白字符:
/\s/g 匹配空白字符:空格、制表符、断行等
/\S/g 匹配非空白字符
字符集合:
/[abc]/g
/[a-z]/g
/[e-o]/g
/[0-9]/g
/[\u4e00-\u9fa5]/g
Unicode(所有中文) u4e00 十六进制0x4e00 graphemica.com" 一"-"龥"
重复一次或多次:
/[yY][oO]+/g
重复零个或多个:
/[yY][oO]+[!~\.]*/g
重复零个或一个:
/[yY][oO]+p?[!~\.]*/g
指定重复范围(重复a到b次)
/yo{1,4}/
yoo
yooo
yoooo
yooooooo
要是我不想要匹配最后一行怎么办
/yo{1,4}\b/g
\b: word boundry 字符边界
hoome
list2
list4
PersonDW 0
Person 0
分组匹配—括号:
/(.+)飞飞,(.+)追追/g
李栓蛋飞飞,王花花追追
$1 $2
分组匹配但不捕获
/1(?:37|38|82|83)\d{4}(\d{4})/g
13712241000
13822232000
18289993000
18398754000
13112241000
17722232000
?:的话就是分组但是不摘出来
$1
正向(肯定)预查(?=模式)
后面肯定有这个字符,但是不匹配他
100元
1000元
100刀
100镑
选中所有以元结尾的数字,不包括元
/\d+(?=元)/g
/\d+(?!元)/g 正向否定预查(?!模式)
匹配所有后面不是"元"的数字
匹配出了:
10
100
100
100
/\d+(?!元|\d)/g
匹配所有后面不是元或者数字 的数字
100
100
反向(肯定)预查:
¥100
¥1000
$100
#100
/(?<=¥)\d+/g
100
1000
反向(否定)预查:
/(?<!¥|\d)\d+/g
100
100
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
正则表达式中\b和\s有什么区别
字符串:abcsdsadas abc asdsadasdabcasdsa
使用\sabc\s和\babc\b都能匹配中间的abc,这种方法不是重复了么?
不一样
\babc\b匹配的是"abc"
\sabc\s匹配的不是"abc", 前后还带空格" abc "
\b只是匹配字符串开头结尾及空格回车等的位置, 不会匹配空格符本身
例如"abc sdsadasabcasdsadasdabcasdsa",
\sabc\s不能匹配,\babc\b可以匹配到"abc"
\b代表字与字中间那个看不见的东西,如
here is a word
那么,这句中有好几个\b, 每个单词的前后都有一个\b.
所以你用 \bhere\b 可以匹配上面这个here,但如果here 不是一个单词,而是一个单词的一部分,如 adheread, 这样的话,用here 可以匹配,用\bhere\b就不能区配了,因为ad后面没有\b. 所以 adhere 中的here 不会被匹配。
总结: \b 就是用在你匹配整个单词的时候。 如果不是整个单词就不匹配。 你想匹配 I 的话,你知道,很多单词里都有I的,但我只想匹配I,就是“我”,这个时候用 \bI\b
\B就是反过来,代表非字间。 类似\d代表数字, \D代表非数字。
2018 年10月29日 补充
(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“(”或“)”。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始