Search code examples
javascriptregexescapingpunctuation

Javascript regex validate password string (escaping punctuations)


I am trying to validate a password string with javascript and need some help with a regex. I have tried some tutorials, but I think I have some problems understanding how to escape quantifiers and/or metacharacters.

I want to make sure that the password string only contains one or more (max 32) characters from the following spans:

"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"012345678901234567890123456789"
"!@#%&/(){}[]=?+*^~-_.:,;"

The first three spans are pretty easy, but I can't figure out the last one. Basically my script looks something like this:

var password = "user_input_password";

if (/^[A-Za-z0-9!@#$%...]{1,32}$/.test(password)) {
    document.write('OK');
} else {
    document.write('Not OK');
}

Any help or input is highly appreciated, thanks!


Solution

  • In general, you can escape a meta-character using a backslash \; however, inside a character class, the only ones you have to escape are ] , \ and - (the ^ only has a meaning at the very beginning). Something like [\w!@#%&/(){}[\]=?+*^~\-.:,;] will do what you want.

    The \w is equal to [A-Za-z0-9_].

    So the full test would be something like:

    /^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)