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

SSA*_*SSA 0 javascript regex

我想弄清楚如何制作特殊的字符。(仅限选定的)以下正则表达式中的可选:

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

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

现在我尝试制作特殊的字符。可选,但如果提供,则应来自允许的集合,并且所有其他条件(1 个大写字母、1 个数字、1 个小写字母)应匹配。任何想法,如何使其发挥作用?

anu*_*ava 5

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

(?=.*[[\]{};:=<>_+^#@$!%*?&])
Run Code Online (Sandbox Code Playgroud)

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

你的正则表达式将变成:

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

正则表达式演示