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?

Original source