正则表达式,用于使用特定集中的可选特殊字符进行密码验证



我正在尝试弄清楚如何在以下正则表达式中使特殊字符(仅限选定的字符(可选:

^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*[[]{};:=<>_+^#$@$!%*?&])[A-Za-zd[]{};:=<>_+^#$@$!%*?&]{8,30} 

上面的正则表达式检查此集合中是否至少有 1 个数字、1 个大写、1 个小写和 1 个特殊字符:[[]{};:=<>+^#$@$!%*?&

现在我尝试将特殊字符设置为可选,但如果提供,它应该来自允许的集合,并且所有其他条件(1 个大写、1 个数字、1 个小写(应该匹配。任何想法,如何使其工作?

您可以从正则表达式中删除此前瞻:

(?=.*[[]{};:=<>_+^#@$!%*?&])

此断言强制正则表达式中至少存在一个特殊字符。

您的正则表达式将变为:

^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[A-Za-zd[]{};:=<>_+^#$@!%*?&]{8,30}$

正则表达式演示

最新更新