首页 > 解决方案 > 用于具有特定字符顺序的强密码的 Javascript 正则表达式

问题描述

我已经看到了强密码检查的答案,但我对字符出现的顺序有额外的要求。

密码应至少包含:

  1. 一个大写字母。
  2. 一个小写字母。
  3. 一个号码。
  4. 一个特殊字符。

顺序是:

例如

标签: javascriptregex

解决方案


在密码中引入特定的字符顺序使其相对更可预测,因此失去了它的强度,我建议你摆脱这个限制。不过,您可以使用此正则表达式来满足您的需求,

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$

解释:

  • ^--> 字符串开头
  • (?=.*[a-z])--> 确保密码至少有一个小写字母。
  • (?=.*[A-Z])--> 确保密码至少有一个大写字母。
  • (?=.*\d) --> 确保密码至少有一位。
  • (?=.*[~!@#$%^&*])--> 确保密码至少包含此集中的一个特殊字符。您可以在其中放入更多要视为特殊的字符。

现在是确保订单的部分。正如你所说,它应该以字母开头,因此我们需要第一个字符,

[a-zA-Z]

然后跟随它可以是字母或数字,因此您可以使用,

[a-zA-Z\d]*

最后你想要特殊字符,并通过你的这个语句“最后,应该是一个特殊字符”。我假设您不想将其限制为仅一个特殊字符,因此在正则表达式的末尾应该是这样的,

[~!@#$%^&*?<>]*

可以匹配一个或多个特殊字符。如果你真的只是想一个特殊的字符,那就让它[~!@#$%^&*?<>]

最后$以停止匹配字符串结束。

现场演示

希望这对你有用。或者,如果有任何其他疑问,请告诉我。

编辑

奖励: 如果您也想检查长度,可以使用以下方法:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])(?=.{6,18}$)[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$

另外(?=.{6,18}$)是确保您的正则表达式的长度在 6 到 18 之间。

@Pushpesh,如有错误请更正。


推荐阅读