Regex 特定密码正则表达式

Regex 特定密码正则表达式,regex,regular-language,Regex,Regular Language,我在创建常规表达式时遇到问题。它需要满足以下要求: 1) 有8-12个字符 2) 至少1个大写字母 3) 至少3个小写字母 4) 至少1个 5) 至少1个特殊字符 6) 必须以小写、大写或数字开头 7) 最多2个重复字符 提前谢谢 到目前为止你得到了什么? 另外,您使用的是哪一组正则表达式 我从表达式的长度开始 将其限制为8-12,类似于[a-zA-Z]{8,12} 对于第一个方面的要求,您可以使用[]+ 对于其他要求,这是一个小把戏这应该是可行的 ^(?=.*[A-Z])(?=(?:.*[a-

我在创建常规表达式时遇到问题。它需要满足以下要求:

1) 有8-12个字符

2) 至少1个大写字母

3) 至少3个小写字母

4) 至少1个

5) 至少1个特殊字符

6) 必须以小写、大写或数字开头


7) 最多2个重复字符

提前谢谢

到目前为止你得到了什么? 另外,您使用的是哪一组正则表达式

我从表达式的长度开始

  • 将其限制为8-12,类似于[a-zA-Z]{8,12}

  • 对于第一个方面的要求,您可以使用[]+

  • 对于其他要求,这是一个小把戏

    这应该是可行的

    ^(?=.*[A-Z])(?=(?:.*[a-z]){3})(?=.*[0-9])(?=.*[!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~])(?=(?:(.)(?!\1\1))+$)[a-zA-Z0-9].{7,11}$
    
    (?=.[A-Z])(?=(?:.[A-Z]){3})(?=.[0-9])(?=.[!”#$%&'()*+,\-/:;?@[\]^{1}])(?=(?:(?!\1\1))+$)[A-zA-Z0-9]。{7,11}$
    
    解释/扩展

     ^                             # BOS
     (?= .* [A-Z] )                # 1 upper
     (?=
          (?: .* [a-z] ){3}             # 3 lower
     )
     (?= .* [0-9] )                # 1 number
     (?=
          .* [!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]   # 1 special
     )
     (?=                           # Maximum 2 repeating
          (?:
               ( . )                         # (1)
               (?! \1 \1 )
          )+
          $ 
     )
     [a-zA-Z0-9]                   # First alnum
     .{7,11}                       # 8 to 12 max chars
     $                             # EOS
    
    ^#BOS
    (?=.[A-Z])#1上
    (?=
    (?:.[a-z]){3}#3更低
    )
    (?=.[0-9])#1个数字
    (?=
    .[!“\$%&'()*+,\-./:;?@[\]^{124;}~]\ 1特别
    )
    (?=#最多2次重复
    (?:
    ( . )                         # (1)
    (?! \1 \1 )
    )+
    $ 
    )
    [a-zA-Z0-9]#第一个alnum
    .{7,11}#最多8到12个字符
    $#EOS
    
    *
    技术上可行。除非你这么做,否则我不会付出更多的努力。正则表达式不擅长匹配“必须至少包含N个…”为什么不能编写一个子例程来扫描字符串一次,并计算出符合每个所需类别的字符数?
    最多2个重复字符
    -这意味着什么?最多2个重复字符:例如,“密码”是可接受的,“密码剑”是供将来参考的,@IlijaStevanović,请阅读目前如何创建一个:最少8个字符,最多12个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:“^(?=.[a-z])(?=..[a-z])(?=..[a-z])(?=.[$$!%*?&])[a-Za-z$!%*?&]{8,12}”