4

我正在尝试使用 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');
}

非常感谢任何帮助或输入,谢谢!

4

3 回答 3

4

通常,您可以使用反斜杠转义元字符\;但是,在字符类中,您唯一需要转义的是],\-^唯一在开始时具有含义)。类似的东西[\w!@#%&/(){}[\]=?+*^~\-.:,;]会做你想做的事。

\w等于[A-Za-z0-9_]。_

所以完整的测试会是这样的:

/^[\w!@#%&/(){}[\]=?+*^~\-.:,;]{1,32}$/.test(password)
于 2011-11-26T08:03:20.763 回答
2
/^[A-Za-z0-9!@#%&\/(){}\[\]=?+*^~\-_\.:,;]{1,32}$/
于 2011-11-26T08:05:15.993 回答
0

您还可以匹配所有不被视为空格的字符(空格、换行符、制表符)

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

要排除引号(我在您的示例中没有看到它们),您可以将它们添加到:

/^[^\s'"]{1,32}$/.test(password);
于 2011-11-26T08:14:00.023 回答