Search code examples
regexregular-language

Specific password regular expression


I am having problems creating a regular expresion. It needs to fullfill the following:

1) Has 8-12 characters

2) At least 1 uppercase letter

3) At least 3 lowercase letters

4) At least 1 number

5) At least 1 special character

6) Has to start with a lowercase, upercase or numeric

7) Maximum of 2 repeating characters

Thanks in advance!


Solution

  • This should work

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

    Explained / Expanded

     ^                             # 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