exp1(?=exp2)
查找后面是exp2的exp1
正则表达式 | 字符串 | 匹配结果 |
---|---|---|
abc(?=123) | abc123 | abc |
abc(?=123) | kabc1234 | abc |
abc(?=123) | abc12 | 不匹配 |
abc(?=123) | abcc123 | 不匹配 |
注意:(?=)表示的就是结尾了,不要和$混用。如^abc(?=123)$无法匹配abc123, ^abc(?=123)可以匹配abc123
exp1(?!exp2)
查找后面不是exp2的exp1
正则表达式 | 字符串 | 匹配结果 |
---|---|---|
abc(?!123) | abc123 | 不匹配 |
abc(?!123) | abc1233 | 不匹配 |
abc(?!123) | abc12 | abc |
abc(?!123) | abcc123 | abc |
(?<=exp2)exp1
查找前面是exp2的exp1
正则表达式 | 字符串 | 匹配结果 |
---|---|---|
(?⇐abc)123 | abc123 | 123 |
(?⇐abc)123 | kabc1234 | 123 |
(?⇐abc)123 | abc12 | 不匹配 |
(?⇐abc)123 | abcc123 | 不匹配 |
(?<!exp2)exp1
查找前面不是exp2的exp1
正则表达式 | 字符串 | 匹配结果 |
---|---|---|
(?<!abc)123 | abc123 | 不匹配 |
(?<!abc)123 | kabc1234 | 不匹配 |
(?<!abc)123 | ab1234 | 123 |
(?<!abc)123 | abcc123 | 123 |
例子:密码规则正则表达式,必须包含字母+数字+特殊字符(这里特殊字符为!@#$),长度为8-16位
^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$])[\da-zA-Z!@#$]{8,16}$