特定密码正则表达式

时间:2017-06-27 16:14:47

标签: regex regular-language

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

1)有8-12个字符

2)至少1个大写字母

3)至少3个小写字母

4)至少1个号码

5)至少有一个特殊字符

6)必须以小写,upercase或数字

开头

7)最多2个重复字符

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

我从表达式的长度开始

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

  2. 对于第一个要求,您可以使用[] +

  3. 对于其他要求,它有点小问题

答案 1 :(得分:0)

这应该有效

^(?=.*[A-Z])(?=(?:.*[a-z]){3})(?=.*[0-9])(?=.*[!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~])(?=(?:(.)(?!\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