[英]Javascript regex validate password string (escaping punctuations)
我正在尝试使用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');
}
任何帮助或输入都非常感谢,谢谢!
通常,您可以使用反斜杠\\
来转义元字符; 但是,在一个角色类中,你必须逃脱的只有]
, \\
和-
( ^
一开始只有意义)。 像[\\w!@#%&/(){}[\\]=?+*^~\\-.:,;]
会做你想要的。
\\w
等于[A-Za-z0-9_]
。
所以完整的测试将是这样的:
/^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/
您还可以匹配所有不被视为空格的字符(空格,换行符,制表符)
/^[^\s]{1,32}$/.test(password);
要排除引号(我在您的示例中没有看到它们),您可以将它们添加到:
/^[^\s'"]{1,32}$/.test(password);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.