正则表达式字符表

转义字符表:

代码

说明

举例

\b

匹配一个单词的边界

‘er\b’匹配以”er”结尾的单词,’\bne’匹配以”ne”开头的单词,’\bnever\b’仅匹配单词”never”

\B

匹配非单词边界

‘er\B’匹配任何包含”er”的单词

\c

一般写法为\cx,匹配由x指明的控制字符,x的值必须为A-Z或a-z之一。否则将c视为一个原意的’c’字符

‘\cM’匹配一个Control-M或回车符

\d

匹配数字字符。等价于[0-9]

‘\d{3}’匹配3个数字

\D

匹配一个非数字字符

‘\D{3}’匹配3个非数字字符

\f

匹配一个换页符。等价于\x0c和\cL

 

\n

匹配一个换行符。等价于\x0a和\cJ

 

\r

匹配一个回车符。等价于\x0d和\cM

 

\s

匹配任何空白字符,包括空格、换页、制表符等。等价于[\f\n\f\t\v]

 

\S

匹配任何非空白字符。等价于[^v]

 

\t

匹配一个制表符。等价于\x09和\cI

 

\v

匹配一个垂直制表符。等价于\x0b和\cK

 

\w

匹配包括下划线的任何单词字符。等价于[A-Xa-z0-9_]

 

\W

匹配任何非单词字符[^A-Xa-z0-9_]

 

\x

一般写法为\xn,匹配n,其中n为16进制转义值。16进制转义值必须为确定的两个数字长。

‘\x41’匹配”A”。’\x041’则等价于’ ’和”1”

\u

一般写法为\un,其中n是一个用四个16进制数字表示的Unicode字符

‘\u00A9’ 匹配版权符号©

选择和分组:

代码

说明

举例

|

一般用法为A|B, 表示匹配A或者B

man|woman   表示可以匹配 man 或者 woman

(

一般与 ) 联用,用来表示一个被获取的匹配

var   a=/qq=(\d+)/.test("qq=10000");alert(RegExp.$1); 将会弹出10000,   可以看到正则表达式中,\d+被括号围起来了,那么匹配之后,括号中匹配的内容将被"获取",并存入到RegExp.$1中,所以现在RegExp.$1就存了\d+匹配得到的内容。如果正则表达式中有2个或者更多括号,第一个括号的内容为$1, 后面依次为$2,$3..$N

[

一般与 ] 联用, 用来表示一个字符的集合

[abc]   可以匹配一个a或者一个b或者一个c

[ab]+   可以匹配多个a或者多个b或者混合,如:"ababababab"   或 "aaaaa", "bbbbb"

?:

表示一个非获取匹配,它的作用是让()变成普通的范围限定符,而不将其匹配内容存储至$N中

'industr(?:y|ies)   可以匹配industry 或者 industries

?!

非匹配预查,一般写法是(?!xxx),在任何不匹配xxx字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

(1).   'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows   2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

(2).   预查的流程,参见   ?= 的解释

?=

匹配预查,一般写法是(?=xxx), 在任何匹配xxx字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

(1).   'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows   3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(2).   var x="12345";alert(x.match(/(?=\d{2})\d{1}/g));结果弹出1,2,3,4,每次匹配只消耗1个字符,而括号内的?=\d{2}是非获取的,不消耗字符,所以匹配了1之后,是从2开始查找,而不是3。

(3).   如果上方的说明不易理解,你可以把(?=)看成是一个探查敌情的侦察兵,而要被搜索的那个字符串为敌人区域,(?=xxx)   就是让?=这个侦察兵去敌人区域里找xxx, 例如上例中的?=\d{2},是要求查找2个数字,?=从头开始搜索,首先会找到12, 找到之后,我们就拿\d{1}尝试去匹配(占领)找到的这个位置,那么\d{1}就是匹配的1, 匹配结束后,相当于我们已经占领了敌人的1这个山头,?=作为侦察兵继续奔向下一个山头,23,同样,我们又拿\d{1}占领2这个山头,一直占到第4个山头,侦察兵继续往后,只有5一个数字了,不符合\d{2}这个条件(需要2个数字),侦查结束。

限定符:

代码

说明

举例

*

表示一个字符重复任意次包括0次

(1). a* 表示希望匹配的字符串含有任意数目的字符a

(2). [a-z]* 表示希望匹配到任意个小写字母

+

表示一个字符重复至少1次

a+ 表示希望匹配的字符串中最少含有1个a字符

?

1.表示一个字符出现0次或1次

2.用来启用非贪婪模式

3.结合:,!,=等字符用于其它功能

1.a? 表示希望匹配的字符串中可能含有1个a字符

2.<[\s\S]+?>   去匹配<abc><abc>得到的是<abc>,如果不加问号,则得到<abc><abc>

3. 详见, ?:, ?=, ?!

{

一般与 } 联用,表示所匹配字符的数量或数量范围

(1). X{2} 表示匹配2个X

(2). X{2,} 表示匹配2个或者更多个X

(3). X{2,5} 表示匹配2-5个X

*?

*的非贪婪写法

(1). 见 +?

(2). 另见: ?? , +?

+?

+的非贪婪写法

[\s\S]+?# 去匹配aaa#bbbb#时,会匹配aaa#,而[\s\S]+#则会匹配aaa#bbbb#

??

?的非贪婪写法

(1). 见 +?

(2). 另见: *? , +?

 定位符:

代码

说明

举例

\b

 

 

\B

 

 

^

1.取补集

2.表示字符串开头

(1). [^a] 表示除了a之外的字符集,当^位于[]之中才做此用途

(2). [^\s] 表示除了空白类字符之外的所有字符集

(1). ^abc 表示希望匹配的字符串以abc开头

$

1.表示字符串结尾

2.$N 表示匹配后,被正则中第N个括号所获取的内容

(1). abc$ 表示希望匹配的字符串以abc结尾

其他字符:

代码

说明

举例

g

1.在javascript中,置于正则表达式末尾,例如:var x=/abc/g, 或者作为RegExp的第2个参数, 例如:var x=new   RegExp("abc","g"); 表示搜索整个字符串。

2.与i或m一起使用

(1).   /a\d/g 去匹配字符串"a1bca2cda3xx"   可以得到 "a1","a2","a3" 3个匹配。

(1).   var x=/abc/gi;

(2).var   x=new RegExp("abc","gi");

i

1.在javascript中,置于正则表达式末尾,例如:var x=/abc/i, 或者作为RegExp的第2个参数, 例如:var x=new   RegExp("abc","i"); 表示匹配时,不区分大小写。

2.与g或m一起使用

/ab/i   可以匹配ab, 也可以匹配AB 或者 aB, Ab

m

1.在javascript中,置于正则表达式末尾,例如:var x=/abc/m, 或者作为RegExp的第2个参数, 例如:var x=new   RegExp("abc","m"); 表示匹配时,将字符串看作多行,每行结尾都有一个$。

2.与g或i一起使用

alert(/ab$/m.test("ab\r\nabc"))   将会弹出true, 而alert(/ab$/.test("ab\r\nabc")) 则是弹出false

\

1.作为转义符号

2其后加数字表示后向引用

3.其后加数字表示八进制数(当\后面的数字大于之前所能获取的匹配数目时)

4.\   参与的转义字符

(2).   \1 表示上一个被获取的匹配, aTa用/(\w)T\1/匹配时,\1表示(\w)中被匹配的a

(3).   \777 表示匹配八进制数0777

 

 

原文地址:https://www.cnblogs.com/shadowwalker/p/3001933.html