Regex pattern to match at least 1 number and 1 character in a string

后端 未结 9 2435
既然无缘
既然无缘 2020-11-22 13:22

I have a regex

/^([a-zA-Z0-9]+)$/

this just allows only alphanumerics but also if I insert only number(s) or only

相关标签:
9条回答
  • 2020-11-22 13:44

    I can see that other responders have given you a complete solution. Problem with regexes is that they can be difficult to maintain/understand.

    An easier solution would be to retain your existing regex, then create two new regexes to test for your "at least one alphabetic" and "at least one numeric".

    So, test for this :-

    /^([a-zA-Z0-9]+)$/
    

    Then this :-

    /\d/
    

    Then this :-

    /[A-Z]/i
    

    If your string passes all three regexes, you have the answer you need.

    0 讨论(0)
  • 2020-11-22 13:48

    This solution accepts at least 1 number and at least 1 character:

    [^\w\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))
    
    0 讨论(0)
  • 2020-11-22 13:51

    Maybe a bit late, but this is my RE:

    /^(\w*(\d+[a-zA-Z]|[a-zA-Z]+\d)\w*)+$/

    Explanation:

    \w* -> 0 or more alphanumeric digits, at the beginning

    \d+[a-zA-Z]|[a-zA-Z]+\d -> a digit + a letter OR a letter + a digit

    \w* -> 0 or more alphanumeric digits, again

    I hope it was understandable

    0 讨论(0)
  • 2020-11-22 13:52

    This RE will do:

    /^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i
    

    Explanation of RE:

    • Match either of the following:
      1. At least one number, then one letter or
      2. At least one letter, then one number plus
    • Any remaining numbers and letters

    • (?:...) creates an unreferenced group
    • /i is the ignore-case flag, so that a-z == a-zA-Z.
    0 讨论(0)
  • 2020-11-22 13:58

    While the accepted answer is correct, I find this regex a lot easier to read:

    REGEX = "([A-Za-z]+[0-9]|[0-9]+[A-Za-z])[A-Za-z0-9]*"
    
    0 讨论(0)
  • 2020-11-22 13:58

    The accepted answers is not worked as it is not allow to enter special characters.

    Its worked perfect for me.

    ^(?=.*[0-9])(?=.*[a-zA-Z])(?=\S+$).{6,20}$

    • one digit must
    • one character must (lower or upper)
    • every other things optional

    Thank you.

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