1. 正则文档参考:
http://www.regexlab.com/zh/deelx/syntax/bas_sesc.htm
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
- 01特殊字符
^ $ ( ) [ ] { } . ? + * |
在正则表达式中有其他含义,如需要匹配本身,需添加 "\" 来匹配该字符本身的标点符号
- 02字符集合
\s \S . \d \D \w \W [:alpha:] [^:alpha: ]
- 03自定义字符集合 [ ]
说明:
[ ] 包含多个字符,可以匹配所包含的字符中的任意一个。同样,每次只能匹配其中一个。
[^ ] 包含多个字符,构成否定格式,可以匹配所包含的字符之外的任意一个字符。
反斜线必须转义 ;[ ]必须转义 ;「^」在方括号首和「-」在方括号中必须转义
不需要转义例:
[aeiou]
[$.*+?{}()|]
[abc^123-]
- 04字符边界
^ $ \b
\b 当前位置的左右两侧,只能有一侧是字母数字或下划线
- 分组
(?:x) 非捕获组 匹配 “x” 但是并不记录 《---------------》(x)
(?<Name>x) 具名捕获组 为x所匹配的取一个名叫Name的group
- 零宽度断言(零宽度预搜索)
说明:判断当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。
注:位置:首个字符的前面,最后一个字符的后面,其他字符的间隔
eg:
- /Jack(?=Sprat|Frost)/
“Jack”后跟有“Sprat”或“Frost”的情况下才会得到匹配。不过, 匹配结果不包括“Sprat”或“Frost”。 - 请你编写正则表达式进行密码强度的验证,规则如下:
至少一个大写字母
至少一个小写字母
至少一个数字
至少8个字符
(?=.?[A-Z])(?=.?[a-z])(?=.*?\d).{8,} - 编写正则表达式匹配不是qq邮箱的数据
.*?@(?!qq.com).+
匹配规则不能写成.*(?!qq.com).+ ,不加@会全部匹配,
原因:*是贪婪匹配一直匹配到最后一个字符,而最后一个字符后肯定没有qq.com 所以认为是符合要求的
如
.\d(?!px) 匹配结果:
.*(?!px) 匹配结果: