Regex pattern to match at least 1 number and 1 character in a string
This RE will do:
/^(?:[0-9]+[a-z]|[a-z]+[0-9])[a-z0-9]*$/i
Explanation of RE:
- Match either of the following:
- At least one number, then one letter or
- At least one letter, then one number plus
- Any remaining numbers and letters
(?:...)
creates an unreferenced group/i
is the ignore-case flag, so thata-z
==a-zA-Z
.
Why not first apply the whole test, and then add individual tests for characters and numbers? Anyway, if you want to do it all in one regexp, use positive lookahead:
/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$/