繁体   English   中英

Javascript正则表达式验证密码字符串(转义标点符号)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM