【问题标题】:Regex to find 4+ repeating lowercase letters and requiring 2+ numbers, special chars, and uppercase正则表达式查找 4+ 个重复的小写字母并需要 2+ 个数字、特殊字符和大写字母
【发布时间】:2021-12-30 17:11:56
【问题描述】:

我正在为强密码整理一个正则表达式,但在弄清楚如何将要求结合在一起时遇到了问题。它们是:

  • 2 个或多个大写字母
  • 2 位或更多位
  • 2 个或更多特殊字符
  • 正好是 15 个字符
  • 连续不超过 4 个不需要重复的小写字母(即 abef)
  • 可以以任何字符开头,但两边都需要空格

我从 regex101 的库条目开始查找 2 个或更多字符,但我不知道如何识别不需要是相同小写字符的重复小写字母,数字/大写/特殊要求是不留在字符组内,也不让它以特殊字符开头。

对于重复的小写字母,我认为像这两种方法中的任何一种一样进行否定的前瞻或后视都可以,但事实并非如此:

(?!.*[a-z]{4,})
(?<![a-z])[a-z]{4,}(?![a-z])

我看不到在完整的正则表达式中的哪个位置出现了以特殊开头或检查捕获组之外的问题。

这是我目前所拥有的完整正则表达式,不包括重复的小写要求:

\b(?=(?:.*[A-Z]){2,})(?=(?:.*[a-z]){2,})(?=(?:.*\d){2,})(?=(?:.*[!@#$%^&*()\-_=+{};:,.>\]\[]){2,})([A-Za-z0-9!#$@%^&*()\-_=+{};:,<.>\]\[]{15})(?!\S)

链接到 https://regex101.com/r/E418tG/1

【问题讨论】:

    标签: regex passwords special-characters regex-lookarounds lowercase


    【解决方案1】:

    为避免超出 15 个字符的界限, (?&lt;!\S)\S{15}(?!\S) 一开始就应该有足够的规定,可以很好地限制其他条款。

    (?<!\S)(?=\S{15}(?!\S))(?!\S*[a-z]{3})(?=\S*[A-Z]\S*[A-Z])(?=\S*[0-9]\S*[0-9])(?=\S*[\\!-/:-@\[\]-`{-~]\S*[\\!-/:-@\[\]-`{-~])\S*(?!\S)
    

    https://regex101.com/r/bZTIQI/1

     (?<! \S )
     (?=                           # 15 characters exactly
        \S{15} 
        (?! \S )
     )
     (?! \S* [a-z]{3} )            # Not more than 3 lowercase letters in a row
     (?= \S* [A-Z] \S* [A-Z] )     # 2 or more capital letters
     (?= \S* [0-9] \S* [0-9] )     # 2 or more digits
     (?=                           # 2 or more special characters
        \S* [\\!-/:-@\[\]-`{-~] 
        \S* [\\!-/:-@\[\]-`{-~] 
     )
     \S* 
     (?! \S )
    

    连续的多个小写由你决定,我把 3 排成一排是不允许的。
    这些条件不需要检查更多,最低允许(不允许)就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 2021-10-09
      • 2012-02-04
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      相关资源
      最近更新 更多