RegEx to make sure that the string contains at least one lower case char, upper case char, digit and symbol

后端 未结 3 1112
悲哀的现实
悲哀的现实 2020-11-22 16:06

What is the regex to make sure that a given string contains at least one character from each of the following categories.

  • Lowercase character
  • Upperca
相关标签:
3条回答
  • 2020-11-22 16:37

    If you need one single regex, try:

    (?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)
    

    A short explanation:

    (?=.*[a-z])        // use positive look ahead to see if at least one lower case letter exists
    (?=.*[A-Z])        // use positive look ahead to see if at least one upper case letter exists
    (?=.*\d)           // use positive look ahead to see if at least one digit exists
    (?=.*\W])        // use positive look ahead to see if at least one non-word character exists
    

    And I agree with SilentGhost, \W might be a bit broad. I'd replace it with a character set like this: [-+_!@#$%^&*.,?] (feel free to add more of course!)

    0 讨论(0)
  • 2020-11-22 16:41

    You can match those three groups separately, and make sure that they all present. Also, [^\w] seems a bit too broad, but if that's what you want you might want to replace it with \W.

    0 讨论(0)
  • 2020-11-22 16:44

    Bart Kiers, your regex has a couple issues. The best way to do that is this:

    (.*[a-z].*)       // For lower cases
    (.*[A-Z].*)       // For upper cases
    (.*\d.*)          // For digits
    

    In this way you are searching no matter if at the beginning, at the end or at the middle. In your have I have a lot of troubles with complex passwords.

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