正则表达式

/./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”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

posted @ 2018-04-11 20:58  hh9515  阅读(167)  评论(0编辑  收藏  举报