正则前瞻匹配

2024-05-11 11:59:00

示例

前瞻(?=)

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}$