摘要:元字符
元字符
数量限定符
+
:代表前面的字符至少出现一次(2或n);?
:代表前面的字符最多出现一次(0或1);*
:代表前面的字符可以出现任意次数或者不出现(0、1或n){n}
:n为一个非负整数,代表前面的字符只能出现n次。{n,}
:n为一个非负整数,代表前面的字符最少出现n次。{n,m}
:n和m均为非负整数。其中n<=m,代表前面的额字符最少出现n次最多出现m次。
?
:当?
紧跟在任何一个其他限制字符后面时,匹配模式是非贪婪的。
非贪婪模式:尽可能少的匹配所搜索的字符串。
eg.
对于字符串”ooooo”,o+?
将匹配单个”o”,而o+
将匹配所有”o”
定位符
^
为匹配输入字符串的开始位置。如果^
在中括号表达式中则表示不接收该字符集(即,除了这些字符)$
为匹配输入字符串的结束位置。\b
匹配一个字边界(字与空格之间的位置)。\b
如果放在要匹配字符串的开始则从单词开始出查找匹配项;如果房子要匹配字符传的结尾则从单词的结尾处查找匹配项。\B
匹配非字边界。位置并不重要。\B
可以放在匹配字符串的额任意位置,只要所在位置为非字边界即可匹配到。
eg./\bch/
会匹配到chat但不会匹配到branch/ch\b/
会匹配到branch但不会匹配到chat
其他特殊字符
()
标记一个子表达式的开始和结束位置。.
匹除换行符\n
之外的任何单字符。如果在中括号表达式中,则只会匹配.
,等价于\.
[
标记一个中括号表达式的开始。\
{
标记限定符表达式的开始。|
指明两项之间的一个选择。
^
$
.
[
\
{
|
这些字符,如果想匹配符号本身需要使用转义符 \
非打印字符
\f
:匹配一个换页符\n
:匹配一个换行符\r
:匹配一个回车符\s
:匹配任何空白字符,包括空格、制表符、换页符等等。\S
:匹配任何非空白字符。\t
:匹配一个制表符\v
:匹配一个垂直制表符
可代表字符簇的字符
\d
:匹配一个数字字符,等价于[0-9]
\D
:匹配一个非数字字符\w
:匹配字母、数字、下划线。\W
:匹配非字母、非数字、非下划线
子表达式及三个非捕获源 ?:
?=
?!
(pattern)
:子表达式,且会保存匹配项到缓存中,后续可以引用。
eg.
找出重复单词(1与2比较,3与4比较)1
2
3var str = "Is is the cost of of gasoline going up up";
var patt1 = /\b([a-z]+) \1\b/ig;
document.write(str.match(patt1));
其中\1
代表第一个子表达式匹配的内容。
非捕获实质上就是不进行匹配项的存储。也就是之后不允许引用。一般用在有|
运算符时。
(?:pattern)
:匹配pattern但不获取匹配结果。 eg. industr(?:y|ies)
会匹配industry或industries(?=pattern)
:正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。(?!pattern)
:正向否定预查,在任何不匹配pattern的字符串开始出匹配查找字符串。(?<!pattern)
:反向否定预查,与正向否定预查类似,只是方向相反。(?<=pattern)
:反向肯定预查,与正向肯定预查类似,只是方向相反。