jQuery 使用特定规则验证密码的方法

jQuery method to validate a password with specific rules

我是 jquery 的新手,正在尝试使用非常基本复杂的验证密码。

密码必须至少为 7 个字符,至少有 1 个大写字母,至少有 1 个小写字母,至少有 1 个数字或特殊字符。

这个问题与我发现的 this answer 非常相似,但是我在添加 "digit OR special char" 部分时遇到了问题。

我认为这是一个我无法理解的正则表达式。我对该答案的修改如下所示:

$.validator.addMethod("pwcheck", function(value) {
return /^[A-Za-z0-9\d=!\-@._*]*$/.test(value) // consists of only these
   && /[a-z]/.test(value) // has a lowercase letter
   && /[A-Z]/.test(value) //has an uppercase letter
   && (/\d/.test(value) || /~!@#$%^&*_-+=[]\{}|;':",.<> /.test(value)
       // has a digit or special char
});

您需要关闭最后一个条件的括号。但实际上我注意到您的正则表达式存在一些问题。首先,您需要将所有特殊字符组合在一个括号中,这样它就不会连续匹配所有这些字符。

但除此之外,正则表达式过于冗长。这是一个更简单的解决方案。

$.validator.addMethod("pwcheck", function(value) {
    return /[A-Z]+[a-z]+[\d\W]+/.test(value)
});

这将匹配 1 个或多个大写字符、1 个或多个小写字符和 1 个或多个 digit/special 字符。然而,这有一个缺陷。它只会按此特定顺序匹配。这意味着大写字母必须在小写字母之前,小写字母必须在数字之前。它会匹配

之类的东西
AFDSabcd1435

但不是

aA5fdHD14z

为了获得更准确的验证,它应该看起来更像这样

$.validator.addMethod("pwcheck", function(value) {
    return /[A-Z]+/.test(value) && /[a-z]+/.test(value) && 
    /[\d\W]+/.test(value) && /\S{7,}/.test(value);
});

这不像我之前的想法那么干净,但它会传递更多选项。

这是一个您可以使用 JavaScript 函数进行测试的示例。

function testValue(string) { 
    return /[A-Z]+/.test(string) && /[a-z]+/.test(string) &&
    /[\d\W]/.test(string) && /\S{7,}/.test(string)
}

testValue("aGFbsdf4")
=> true

编辑: 以下答案适用于 original version of the OP.


假设你的正则表达式是正确的,你有一个语法错误。

这一行...

&& (/\d/.test(value) || /~!@#$%^&*_-+=[]\{}|;':",.<> /.test(value)

应该是...

&& /\d/.test(value) || /~!@#$%^&*_-+=[]\{}|;':",.<> /.test(value)

&& (/\d/.test(value) || /~!@#$%^&*_-+=[]\{}|;':",.<> /.test(value))