最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Javascript regex validate password string (escaping punctuations) - Stack Overflow

programmeradmin2浏览0评论

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!

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!

Share Improve this question asked Nov 26, 2011 at 7:55 JoséJosé 3913 silver badges14 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 4

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)
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/

You can also match all characters that are not considered white space (space, newline, tab)

/^[^\s]{1,32}$/.test(password);

To exclude quotes as well (I didn't see them in your example) you can add those in:

/^[^\s'"]{1,32}$/.test(password);
发布评论

评论列表(0)

  1. 暂无评论