我正在尝试使用javascript验证密码字符串,并需要一些正则表达式的帮助。我已经尝试了一些教程,但我认为我在理解如何逃避量词和/或元字符时遇到了一些问题。
我想确保密码字符串只包含以下跨度中的一个或多个(最多32个)字符:
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"012345678901234567890123456789"
"!@#%&/(){}[]=?+*^~-_.:,;"
前三个跨度非常简单,但我无法弄清楚最后一个。基本上我的脚本看起来像这样:
var password = "user_input_password";
if (/^[A-Za-z0-9!@#$%...]{1,32}$/.test(password)) {
document.write('OK');
} else {
document.write('Not OK');
}
非常感谢任何帮助或意见,谢谢!
答案 0 :(得分:4)
通常,您可以使用反斜杠\
来转义元字符;但是,在一个角色类中,你必须逃脱的只有]
,\
和-
(^
在一开始只有意义)。像[\w!@#%&/(){}[\]=?+*^~\-.:,;]
之类的东西会做你想要的。
\w
等于[A-Za-z0-9_]
。
所以完整的测试将是这样的:
/^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)
答案 1 :(得分:2)
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/
答案 2 :(得分:0)
您还可以匹配所有不被视为空格的字符(空格,换行符,制表符)
/^[^\s]{1,32}$/.test(password);
要排除引号(我在您的示例中没有看到它们),您可以将它们添加到:
/^[^\s'"]{1,32}$/.test(password);