目前我有以下正则表达式模式:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}
它至少是一个小写,一个大写,一个数字和一个特殊字符 . 如何制作特殊字符 optional ?
如何使特殊字符可选?
只需删除lookahead以检查特殊字符:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}$
在你的正则表达式中使用结束锚 $ 也更安全 .
$
看起来你需要的是 ? [$@$!%*?&]
?
[$@$!%*?&]
你的正则表达式应该是 ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&]?)[A-Za-z\d$@$!%*?&]{8,}
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&]?)[A-Za-z\d$@$!%*?&]{8,}
https://regex101.com/r/1V8Xsq/1
2 回答
只需删除lookahead以检查特殊字符:
在你的正则表达式中使用结束锚
$
也更安全 .看起来你需要的是
?
[$@$!%*?&]
你的正则表达式应该是
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&]?)[A-Za-z\d$@$!%*?&]{8,}
https://regex101.com/r/1V8Xsq/1