【问题标题】:Regex issue with setting up a password policy设置密码策略的正则表达式问题
【发布时间】:2018-08-20 10:56:27
【问题描述】:

我想使用 Regex 设置密码策略。如果可以,请你帮助我。基本上,我希望能够检查以下密码规则:

  • 密码至少应包含 12 个字符
  • 至少应包含 3 个小写字符
  • 至少应包含 3 个大写字符
  • 一个数字
  • 特殊字符

非常感谢!

祝你好运,

马辛

【问题讨论】:

标签: regex passwords policy


【解决方案1】:

虽然必须审查问题,但肯定的前瞻是零宽度断言,因此可以用于组合 AND 条件。 x 标志用于提高可读性。

^
(?=.{12,})                  # at least 12 characters
(?=(?:[^a-z]*[a-z]){3,})    # at least 3 lowercase characters
(?=(?:[^A-Z]*[A-Z]){3,})    # at least 3 uppercase characters
(?=(?:[^0-9]*[0-9]){1,})    # a number
(?=(?:[^ -\/:-@[-`{-~]*[ -\/:-@[-`{-~]){1,}) # a special character
.*$                         # to get the match

check on regex101

【讨论】:

  • 非常感谢。这正是我一直在寻找的。祝你有美好的一天。
  • 不需要使用{3,},因为您只检查它是否满足{3}。这只是无缘无故的额外处理。 {12,}{1,} 也是如此(实际上与 + 相同,但这里不需要量词。此外,只需删除第一个前瞻并将其作为模式的一部分而不是 .{12,}$
  • 另外,您不应该将特殊字符限制为它们的特定子集。这会降低密码强度并有效地允许攻击者利用密码中的字符限制。
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 2018-09-26
  • 2017-07-08
相关资源
最近更新 更多