正则表达式

创建时间:2019.02.14 修改时间:2019.03.25

与整个字符串匹配:表达式以 ^ 开头,以 $ 结尾。

如 /^abc123$/ 只能匹配字符串 abc123。

而 /abc123/ 可以匹配字符串中所有 abc123。

注:$ 也匹配 \n 或 \r。前后“/”之间为正则表达式内容。

限定单个字符范围:[] [^] . \w \W

如 /[A-Za-z0-9]/ 表示单个字符为英文或数字。

/[^A-Za-z0-9]/ 表示不为英文或数字的单个字符。

. 表示除换行符 \n 之外的任何单字符。

\w 匹配字母、数字、下划线,等价于 [A-Za-z0-9_]。

\W 匹配非字母、数字、下划线,等价于 [^A-Za-z0-9_]。

指定单个字符重复次数,限定符:? * + {n} {n,} {n,m}

划分子表达式:()

如 /^win(98|2000|XP|7)$/ 匹配字符串 win98、win2000、winXP、win7。

() 内的子表达式会被缓存,并在表达式中用 \1、\2、\3 的形式调用。1 表示第 1 个子表达式,2 表示第 2 个子表达式……0 表示整个正则表达式。

如 /([a-z]+) \1/ 匹配字符串“this is”中的“is is”。

如果不希望缓存子表达式,可以在 () 内以 ?: 做为子表达式的开头。

如 /^win(?:98|2000|XP|7)$/

另外以 ?<=?= 为子表达式的开头,匹配的字符串将不包括号内的内容,同样子表达式不会被缓存。

以 ?<= 为开头的子表达式,规定放在整个正则表达式的开头,表示从子表达式匹配到的字符串向后查找。

以 ?= 为开头的子表达式,规定放在整个正则表达式的结尾,表示从子表达式匹配到的字符串向前查找。

如 /(?<=【)456(?=】)/ 匹配字符串“123【456】789”中的“456”,而不匹配“123456789”中的“456”。

而 /(?<!【)456(?!】)/ 相反,能够匹配字符串“123456789”中的“456”,而不匹配“123【456】789”中的“456”。

匹配非打印字符:

限定所匹配对象为单词边界或非单词边界:\b \B

注:\b 放在表达式前匹配单词的开头,放在表达式后匹配单词的结尾。

原义符:\

所有正则表达式中表示特殊含义的符号,如 * . ( ) { } [ ] 等,如果要匹配自身,需在前面加 \。包括 \ 本身,匹配表达式为 /\\/。