TIP
正则分组与断言
(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,12}密码由6-12个字符组成,需包含字母、字符和数字。对于这个正则,不理解呀
- 先行断言
- (?=X) 字符串后面紧跟着X才能匹配,如:字符串
hello world, 要匹配world中的l正则/l(?=d)/ - (?!X) 字符串后面不能跟着X才能匹配,如:要求同上,正则
/l(?=(l|d))/
- (?=X) 字符串后面紧跟着X才能匹配,如:字符串
- 后行断言
- (?<=X) 字符串前必须为X才能匹配,如:要求同上,正则
/(?<=r)l/ - (?<!X) 字符串前必须不为X才能匹配,如:要求同上,正则
/(?<!(l|e))l/
- (?<=X) 字符串前必须为X才能匹配,如:要求同上,正则
括号是分组,本身会参与匹配。但里面加了断言,就成为了查找条件,本身不参与匹配了。
(?=.*[0-9])条件-任意字符后面跟着一个数字
(?=.*[a-zA-Z])条件-任意字符后面跟着一个字母
(?=.*[^a-zA-Z0-9])条件-任意字符后面跟着一个非字母数字即字符
.{6,12}匹配-6到12位任意字符
前三个括号可分开来看,匹配字符串满足三个括号里的条件





