正则元字符
基本型
^
: 集合中表排除,集合外表开始,多行模式也表\n
或\r
之后的位置$
: 表结束,多行模式也表\n
或\r
之前的位置{}
: 表数量范围()
: 表捕获[]
: 表集合-
: 表区间.
: 表\n
外的所有字符
数量型
*
: 0次或多次 <=>{0,}
+
: 1次或多次 <=>{1,}
?
: 0次或1次 <=>{0,1}
{n}
: n次{n,}
: n次(含)以上{n,m}
: n次(含)以上,m次(含)以下
转义型
基本字符类
\d
: 表数字 <=>[0-9]
\D
: <=>[^0-9]
\w
: 表包括下划线的任何单词字符 <=>[A-Za-z0-9_]
\W
: <=>[^A-Za-z0-9_]
空白类
\b
: 表单词边界\B
: 表非单词边界\s
:表任意空白字符<=>[\f\n\r\t\v]
\S
:表任意非空白字符<=>[^\f\n\r\t\v]
\f
:表换页符\n
:表换行符\r
:表回车符\t
:表制表符\v
:表垂直制表符
其他类
\NUM
: 向后引用,NUM
为正整数,如(.)\1
表两个连续的相同字符\uNUM
: 表Unicode字符,NUM
为四个十六进制数字表示的Unicode字符,[\u4e00-\u9fa5]*
表任意数量的汉字
优先级
优先级 | 符号 |
---|---|
最高 | \ |
高 | ()、(?:)、(?=)、[] |
中 | *、+、?、{n}、{n,}、{m,n} |
低 | ^、$、- |
最低 | 分割线(markdown 表格打不出来) |
正则表达式的捕获和预查
捕获
(pattern)
匹配并捕获。
1 | var reg = /Java(6|7)/; |
(?:pattern)
匹配不捕获。
1 | var reg = /Java(?:6|7)/; |
正向预查
(?=pattern)
正向匹配,不消耗字符
1 | var reg = /Java(?=6|7)/; |
(?!pattern)
正向不匹配,不消耗字符
1 | var reg = /Java(?!6|7)/; |
2、反向预查
JavaScript不支持
(?<=pattern)
反向匹配,不消耗字符
(?<!pattern)
反向不匹配,不消耗字符—