javascript – 正则表达式与两个或多个特殊字符匹配强密码

前端之家收集整理的这篇文章主要介绍了javascript – 正则表达式与两个或多个特殊字符匹配强密码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要正则表达式匹配密码字段使用 javascript与以下要求:

>至少15个字符
>两个或多个小写字母
>两个或多个大写字母
>两位或更多位数字
>以下两个或多个特殊字符:!@#$%^& * –

我有一个正则表达式来处理MOST的情况:

/^.*(?=.{15,})(?=.{2,}\d)(?=.{2,}[a-z])(?=.{2,}[A-Z])(?=.{2,}[\!\@\#\$\%\^\&\*\-]).*$/

这里的问题是符号,它适用于:

06001

但不是:

06002

我有一个随机的密码发生器设置来彻底测试这个,所以任何想法都非常感激.谢谢!

解决方法

/^(?=(?:.*[a-z]){2})(?=(?:.*[A-Z]){2})(?=(?:.*\d){2})(?=(?:.*[!@#$%^&*-]){2}).{15,}$/

你的前卫是错误的.模式

(?=.{2,}[class])

意味着匹配2个或更多个字符(无论什么字符),然后是所需类别的1个字符.这完全不同于您指定的“所需类别的2个或更多个字符”.

要正确测试所需类的字符是否在文本中,请使用

(?=.*[class])

因为你想检查它两次,重复该模式

(?=.*[class].*[class])
# equivalent to (?=(?:.*[class]){2})

猜你在找的JavaScript相关文章