Need regular expression for checking at least 3 uppercase, 3 lowercase, 3 digits and 3 special character

前端 未结 3 1698
天命终不由人
天命终不由人 2021-01-19 06:22

Need regular expression for checking at least 3 uppercase, 3 lowercase, 3 digits and 3 special character any where in string.

I have tried /^(?=.*[^A-Za-z0-9]

相关标签:
3条回答
  • 2021-01-19 06:26
    /^(?=(.*[^A-Za-z0-9]){3,})(?=(.*[A-Z]){3,})(?=(.*\d){3,})(?=.*[a-z]){3,}).+/
    

    So you were close.

    0 讨论(0)
  • 2021-01-19 06:40

    Both of the other answers fail for a string which doesn't match the "at least 3 lowercase" requirement. Using Bohemian's answer but supporting that case gives the following regex:

    ^(?=(.*[^A-Za-z0-9]){3})(?=(.*[A-Z]){3})(?=(.*[a-z]){3})(?=(.*\d){3}).+

    0 讨论(0)
  • 2021-01-19 06:48

    You were close: you need to bracket the .* with the character classes in your look aheads:

    ^(?=(.*[^A-Za-z0-9]){3})(?=(.*[A-Z]){3})(?=(.*\d){3}).+
    

    The reason this works is that the character types may not be adjacent, eg 3 digits might be a1b2c3, hence the .* to allow other intervening character types.

    Note that you don't need the open-ended quantifiers. eg (.*\d){3} is sufficient to assert that there are at least 3 digits - ie not ...{3,}


    And a final note: those leading/trailing slashes have nothing whatsoever to do with regular expressions - they are an application language artefact. It makes questions and answers clearer and more useful to more people if they are omitted.

    0 讨论(0)
提交回复
热议问题