元字符:
元字符 | 对应说明 | 备注 | |
---|---|---|---|
. | 除换行符以外的其他字符 | ||
\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 |
分组/捕获:
分组字符 | 对应说明 | 备注(图为全局匹配//g) | |
---|---|---|---|
(exp) | 用小圆括号进行分组,如日期中年月日的分组:/(\d{4})-(\d{1,2})-(\d{1,2})/ 每个分组将产生分组号,从第一个括号开始,可以使用\n的形式在正则中使用分组号, 如匹配成对出现的HTML标签,可以写成:/<(\w+)><\/\1>/ | ||
(?:exp) | 匹配exp正则,但不产生分组号 | 匹配exp,多个使用必须符合正则顺序才能匹配
| |
exp1(?=exp2) | 前瞻断言,匹配exp1,但后面必须是exp2 如匹配姓zhang,并且名字为xianlie的人:/zhang(?=xianlie)/ | (?=p): 匹配符合p子模式前面的那个位置
| exp1(?=exp2) :匹配exp1,后面必须是exp2(匹配字符)
|
exp1(?!exp2) | 后瞻断言,匹配exp1,但后面不能是exp2 如匹配姓zhang,但名字不叫xianlie的人:/zhang(?!xianlie)/ | (?=p):匹配到的位置之外的位置都是属于(?!p)的
| exp1(?!exp2):exp1后不为exp2的exp1被匹配到
|
(?<=exp2)exp1 | (?<=p):前面的部分满足p的位置
| (?<=exp2)exp1:满足前边为exp2的exp1被匹配
| |
(?<!exp2) | (?<!p):(?<=p)匹配到的位置之外的位置都是属于(?<!p)的
|
贪婪与惰性:
相关字符 | 对应说明 |
---|---|
*? | 重复任意次,但尽可能少的重复 |
+? | 重复一次或多次,但尽可能少的重复 |
?? | 重复零次或一次,但尽可能少的重复 |
{m,n}? | 重复m到n次,但尽可能少的重复 |
{n,}? | 重复n次以上,但尽可能少的重复 |
{n}? | 重复n次,但尽可能少的重复 |
修饰符:
修饰符 | 对应说明 |
---|---|
i | ignoreCase的缩写,表示忽略字母的大小写 |
m | multiline的缩写,更改^和$的含义,使它们分别在任意一行的行首和行尾匹配 ,而不仅仅在整个字符串的开头和结尾匹配。 (在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.) |
g | global的缩写,进行全局匹配,即对字符串进行全文匹配,直到字符串遍历结束 |
正则表达式是匹配模式
,要么匹配字符
,要么匹配位置
实例:
- 请输入8~20位英文/数字、特殊字符的组合。特殊字符仅限!@#%
- /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#%])[0-9a-zA-Z!@#%]{8,20}$/