正则前瞻匹配

2024-05-11 11:59:00

示例

前瞻(?=)

exp1(?=exp2) 查找后面是exp2的exp1

正则表达式字符串匹配结果
abc(?=123)abc123abc
abc(?=123)kabc1234abc
abc(?=123)abc12不匹配
abc(?=123)abcc123不匹配

注意:(?=)表示的就是结尾了,不要和混用。如abc(?=123)无法匹配abc123, abc(?=123)可以匹配abc123

负前瞻(?!)

exp1(?!exp2) 查找后面不是exp2的exp1

正则表达式字符串匹配结果
abc(?!123)abc123不匹配
abc(?!123)abc1233不匹配
abc(?!123)abc12abc
abc(?!123)abcc123abc

后顾(?<=)

(?<=exp2)exp1 查找前面是exp2的exp1

正则表达式字符串匹配结果
(?<=abc)123abc123123
(?<=abc)123kabc1234123
(?<=abc)123abc12不匹配
(?<=abc)123abcc123不匹配

负后顾(?<!)

(?<!exp2)exp1查找前面不是exp2的exp1

正则表达式字符串匹配结果
(?<!abc)123abc123不匹配
(?<!abc)123kabc1234不匹配
(?<!abc)123ab1234123
(?<!abc)123abcc123123

例子:密码规则正则表达式,必须包含字母+数字+特殊字符(这里特殊字符为!@#$),长度为8-16位

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$])[\da-zA-Z!@#$]{8,16}$