RegEx to make sure that the string contains at least one lower case char, upper case char, digit and symbol
regex
Solution
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!)
Problem
What is the regex to make sure that a given string contains at least one character from each of the following categories. - Lowercase character - Uppercase character - Digit - Symbol I know the patterns for individual sets namely `[a-z]`, `[A-Z]`, `\d` and `_|[^\w]` (I got them correct, didn't I?). But how do I combine them to make sure that the string contains all of these in any order?