【发布时间】:2013-08-16 09:16:02
【问题描述】:
var pattern = /^[a-zA-Z0-9!@#$%^&*()~]+$/;
var username = document.getelementbyId("txtUsername").value;
if(pattern.test(username) == false) {
alert("Invalid Username");
}
上述正则表达式模式不起作用。 我想要一个正则表达式,其中密码必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。
【问题讨论】:
-
username,密码?是哪个? -
使用 4 个单独的测试。我的建议是将其卸载到单独的函数中以提高可读性。
-
@Kolink 是和否。强制执行最小熵并不是一个坏主意。这里的 OP 试图通过在使用的字母表中强制执行熵来做到这一点。 XKCD 先生是在建议长度维度的熵。任何一个维度都应该被强制执行。理想情况下,您可以根据字母 * 长度计算密码的熵并以这种方式执行。不过,这一切都有些毫无意义。如果攻击者必须预期字母表可能是 a-zA-Z0-9!@#$%^&*(),即使“aaaaaaaa”也是一个很好的密码~.
标签: javascript jquery regex