Javascript正则表达式语法

元字符

元字符对应说明
.匹配除换行符之外的任意字符
\w匹配字母数字下划线,等同于:[a-zA-Z0-9_]
\s匹配任意空白符
\d匹配数字,等同于 [0-9]
\b匹配单词边界
|或匹配,如 /x|y/ 正则可匹配x或y两个字符
^匹配字符串的开始
$匹配字符串的结束

反义字符

反义字符对应说明
[^x]匹配除“x”之外的所有字符,其中“x”可以为任意字符
[^xyz]同上,匹配除“x、y、z”之外的任意字符
\W匹配除了字母、数字、下划线之外的所有字符,等同于:[^\w]
\S匹配除空白符之外的任意字符,等同于:[^\s]
\B匹配不是单词边界的字符,等同于:[^\b]
\D匹配不是数字的所有字符,等同于:[^\d]

转义字符

转义字符对应说明
\xnn匹配十六进制数
\f匹配换页符,等同于:\x0c
\n匹配换行符,等同于:\x0a
\r匹配回车符,等同于:\x0d
\t匹配水平制表符,等同于:\x09
\v匹配垂直制表符,等同于:\x0b
\unnnn匹配Unicode字符,如:\u00A0

重复匹配

匹配字符对应说明
*重复出现零次或多次
+重复出现一次或多次
?重复出现零次或一次
{n}重复出现n次
{n,}至少重复出现n次
{m,n}重复重现m到n次,其中,m<n

分组/捕获

分组字符对应说明
(exp)用小圆括号进行分组,如日期中年月日的分组:/(\d{5})-(\d{1,2})-(\d{1,2})/,每个分组将产生分组号,从第一个括号开始,可以使用\n的形式在正则中使用分组号,如匹配成对出现的HTML标签,可以写成:/<(\w+)><\/\1>/
(?:exp)匹配exp正则,但不产生分组号
exp1(?=exp2)前瞻断言,匹配exp1,但后面必须是exp2,如匹配名字叫xianlie,但不姓zhao的人:/zhao(?=xianlie)/
exp1(?!=exp2)后瞻断言,匹配exp1,但后面不能是exp2,如匹配姓zhao,但名字不叫xianlie的人:/zhao(?!xianlie)/

贪婪与惰性

相关字符对应说明
*?重复任意次,但尽可能少的重复
+?重复一次或多次,但尽可能少的重复
??重复零次或一次,但尽可能少的重复
{m,n}?重复m到n次,但尽可能少的重复
{n,}?重复n次以上,但尽可能少的重复
{n}?重复n次,但尽可能少的重复

修饰符

修饰符对应说明
iignoreCase 的缩写,表示忽略字母的大小写
mmultiline 的缩写,更改^$的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.)
gglobal 的缩写,进行全局匹配,即对字符串进行全文匹配,直到字符串遍历结束