Javascript Regex可提供强密码,并具有特定的字符顺序

时间:2018-12-15 16:17:23

标签: javascript regex

我已经看到了有关强密码检查的答案,但是我对字符的显示顺序还有其他要求。

密码至少应包含:

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

订单为:

  • 应以大写和小写字母开头。
  • 后跟数字和/或字母字符。
  • 最后,应为特殊字符。

例如

  • Xyz1325 @有效。
  • aBcd123xYz#也有效。
  • @ Xyz1234无效。
  • 1234Xyz @无效。
  • Xyz @无效。

2 个答案:

答案 0 :(得分:1)

我相信您正在寻找的正则表达式是:https://regex101.com/r/nO2DxE/2

说明: 这些组(?=.*[A-Z].*) (?=.*[0-9].*) (?=.*[a-z].*)确保您的字符串至少包含一个大写字母,一个小写字母和一个数字。正则表达式的其余部分检查您所描述的顺序是否得到遵守。

总体而言,正则表达式为: (?=.*[A-Z].*)(?=.*[0-9].*)(?=.*[a-z].*)^[a-zA-z][a-zA-Z0-9]*[@!#+-]$

答案 1 :(得分:1)

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

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

说明:

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

现在是确保订单的零件。如您所说,它应该以字母开头,因此我们需要第一个字符为

[a-zA-Z]

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

[a-zA-Z\d]*

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

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

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

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

Live Demo

希望这对您有用。否则,让我知道其他任何疑问。

修改

奖金: 如果您还想检查长度,则可以使用以下方法进行检查:

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

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

@Pushpesh, 如果有误,请更正。