正则元字符
基本型
^: 集合中表排除,集合外表开始,多行模式也表\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) 反向不匹配,不消耗字符—