【发布时间】:2023-03-29 20:45:02
【问题描述】:
我需要使用具有以下要求的 javascript 正则表达式匹配密码字段:
- 至少 15 个字符
- 两个或多个小写字母
- 两个或多个大写字母
- 两位或多位数字
- 以下两个或多个特殊字符:!@#$%^&*-
我有一个处理大多数情况的正则表达式:
/^.*(?=.{15,})(?=.{2,}\d)(?=.{2,}[a-z])(?=.{2,}[A-Z])(?=.{2,}[\!\@\#\$\%\^\&\*\-]).*$/
这里的问题在于符号,它适用于:
P@ssw0rdP@ssw0rd Pssw0rdPssw0rd@@ Pssw0rd@@Pssw0rd
但不是:
@@Pssw0rdPssw0rd
我设置了一个随机密码生成器来对此进行详尽的测试,因此非常感谢任何想法。谢谢!
【问题讨论】:
-
我认为这不能用 one 正则表达式来完成。
-
@Salman:为什么不呢?听说过前瞻吗?
-
我建议不要这样做。在您的情况下,强制密码安全是用户创建“password1”或“PAssword!@12345”的主要原因之一。
-
@yorick 我认为如果用户不强制执行密码安全性,他们可能会选择像
p这样的东西(我已经看到了) -
我更喜欢将各种条件分解为代码中的步骤,而不是通过一个复杂的正则表达式。这样您就可以向用户报告为什么他们的密码没有通过安全验证。也更容易验证它是否确实有效。
标签: javascript regex passwords