用于validation具有特定规则的密码的jQuery方法

我是jquery的新手,并尝试使用validation密码的非常基本的复杂性。

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

这个问题与我找到的这个答案非常相似,但是我在添加“数字OR特殊字符”部分时遇到了麻烦。

我认为这是一个正则表达式,我只是没有得到。 我对该答案的修改如下:

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

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

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

 $.validator.addMethod("pwcheck", function(value) { return /[AZ]+[az]+[\d\W]+/.test(value) }); 

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

 AFDSabcd1435 

但不是这样的

 aA5fdHD14z 

要获得更准确的validation,它应该看起来更像这样

 $.validator.addMethod("pwcheck", function(value) { return /[AZ]+/.test(value) && /[az]+/.test(value) && /[\d\W]+/.test(value) && /\S{7,}/.test(value); }); 

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

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

 function testValue(string) { return /[AZ]+/.test(string) && /[az]+/.test(string) && /[\d\W]/.test(string) && /\S{7,}/.test(string) } testValue("aGFbsdf4") => true 

编辑:以下答案是针对OP的原始版本 。


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

这条线……

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

应该…

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

要么

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