^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 |
$ | 匹配输入字符串的结尾位置。如果设置多行匹配,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。 |
() | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 [Math Processing Error]。 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \&;。 |
* | 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 |
. | 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 |
[] | 标记一个字符集合的开始和结束。要匹配 [或],请使用 [Math Processing Error]。 |
\ | 将下一个字符标记为特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。 |
| | 指明两项之间的一个选择。要匹配 |,请使用 \|。 |
{} | 标记限定符表达式的开始和结束。要匹配 {或},请使用 \{或\}。 |
三、非打印字符
\cx | 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
\f | 匹配一个换页符。等价于 \x0c 和 \cL。 |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ。 |
\r | 匹配一个回车符。等价于 \x0d 和 \cM。 |
\t | 匹配一个制表符。等价于 \x09 和 \cI。 |
\v | 匹配一个垂直制表符。等价于 \x0b 和 \cK。 |
四、预定义字符
. | 任何字符(与结束符\r\n可能匹配也可能不匹配) |
\d | 数字,等价于[0-9] |
\D | 非数字,等价于[^0-9] |
\s | 空白字符,等价于[ \t\n\x0B\f\r] |
\S | 非空白字符,等价于[^\s] |
\w | 单词字符,等价于[a-zA-Z_0-9] |
\W | 非单词字符,等价于[^\w] |
\b | 单词的前或后边界 |
\B | 表示非单词边界 |
五、POSIX 字符
[:alnum:] | 任何一个字母或数字,等价于[a-zA-Z0-9] |
[:alpha:] | 任何一个字母,等价于[a-zA-Z] |
[:blank:] | 空格或制表符,等价于[\t] |
[:cntrl:] | ASCII控制字符(ASCII 0到31,再加上ASCII127) |
[:digit:] | 任何一个数字,等价于[0-9] |
[:graph:] | 任何一个可打印字符,但不包括空格 |
[:lower:] | 任何一个小写字母,等价于[a-z] |
[:print:] | 任何一个可打印字符 |
[:punct:] | 既不属于[:alnum:]和[:cntrl:]的任何一个字符 |
[:space:] | 任何一个空白字符,包括空格,等价于[^\f\n\r\t\v] |
[:upper:] | 任何一个大写字母,等价于[A-Z] |
[:xdigit:] | 任何一个十六进制数字,等价于[a-fA-F0-9] |
六、限定符
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于{1,}。 |
? | 匹配前面的子表达式零次或一次。例如,"do(es)?"可以匹配 "do" 或"does" 中的"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" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 |
这里只是按照功能的不同来对正则表达式中用到的一些操作符进行分类,不一定准确,只是为了说明正则表达式中的操作符。
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述对大家正则表达式的学习有所帮助。