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!
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)