语法
# 语法
# 匹配普通字符
包括所有大小写字母、数字、所有标点符号和一些其他符号
字符 | 说明 | 例子 |
---|---|---|
[ABC] | 匹配 [...] 中的所有字符 | 字符串:"google runoob taobao" 匹配字符:[aeiou] 结果:o,o,e,u,o,o,a,o,a,o |
[^ABC] | 匹配除了 [...] 中的所有字符 | 字符串:"google runoob taobao" 匹配字符: [^aeiou] 结果:g,g,l, ,r,n,b, ,t,b |
[A-Z] [a-z] | [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母 | 字符串:"Google Runoob Taobao" 匹配字符:[A-Z] 结果:G,R,T |
. | 匹配除换行符(\n、\r)之外的任何单个字符,相当于[^\n\r] | 字符串:"google runoob taobao" 匹配字符:. 结果:g,o,o,g,l,e, ,r,u,n,o,o,b, ,t,a,o,b,a,o |
[\s\S] | 匹配所有, \s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行 | 字符串:"google runoob taobao\nRUnoob\ntaobao" 匹配字符:[\s\S] 结果:g,o,o,g,l,e, ,r,u,n,o,o,b, ,t,a,o,b,a,o, ,R,U,n,o,o,b, ,t,a,o,b,a,o |
\w | 匹配字母、数字、下划线,等价于 [A-Za-z0-9_] | 字符串:"Google Runoob 123Taobao" 匹配字符:[\s\S] 结果:G,o,o,g,l,e,R,u,n,o,o,b,1,2,3,T,a,o,b,a,o |
# 特殊字符
- 一些有特殊含义的字符,可以表示任何字符串
- 如果要查找字符串中的特殊字符,则需要对特殊字符进行转义
字符 | 描述 |
---|---|
$ | 匹配输入字符串的结尾位置 如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r' 要匹配 $ 字符本身,请使用 $ |
( ) | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。 |
* | 匹配前面的子表达式零次或多次 要匹配 * 字符,请使用 * |
+ | 匹配前面的子表达式一次或多次 要匹配 + 字符,请使用 + |
. | 匹配除换行符 \n 之外的任何单字符 要匹配 . ,请使用 . |
[ | 标记一个中括号表达式的开始 要匹配 [,请使用 [ |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符 要匹配 ? 字符,请使用 ? |
\ | 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符 'n' 匹配字符 'n' '\n' 匹配换行符 序列 '\' 匹配 "",而 '(' 则匹配 "(" |
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合 要匹配 ^ 字符本身,请使用 ^ |
{ | 标记限定符表达式的开始 要匹配 {,请使用 { |
| | 指明两项之间的一个选择 要匹配 |,请使用 | |
# 限定符
用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配
有 ***** 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种
字符 | 描述 | 例子 |
---|---|---|
* | 匹配前面的子表达式零次或多次 | zo* 能匹配 z 以及 zoo * 等价于{0,} |
+ | 匹配前面的子表达式一次或多次 | zo+ 能匹配 zo 以及 zoo ,但不能匹配 z + 等价于 {1,} |
? | 匹配前面的子表达式零次或一次 | do(es)? 可以匹配 do 、 does 中的 does 、 doxy 中的 do ? 等价于 {0,1} |
{n} | n 是一个非负整数。匹配确定的 n 次 | o{2} 不能匹配 Bob 中的 o ,但是能匹配 food 中的两个 o |
{n,} | n 是一个非负整数。至少匹配 n 次 | o{2,} 不能匹配 Bob 中的 o ,但能匹配 foooood 中的所有 o o{1,} 等价于 o+ o{0,} 则等价于 o* |
{n,m} | m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次 | o{1,3} 将匹配 fooooood 中的前三个 oo{0,1} 等价于 o? 请注意在逗号和两个数之间不能有空格 |