附加方法 jquery 验证中特殊字符的正则表达式问题
Issue with regex for special characters in additional method jquery validate
我有不同的密码验证规则。他们中的大多数工作正常,但用于特殊字符的有点棘手。规则说:密码必须至少包含一个特殊字符(来自特殊字符列表)。我为 jquery validate 创建了额外的方法来处理这个问题,但出于某种原因,列表之外的字符被视为有效。
例如:
- 654321Ab/ 有效,因为 / 是可接受的特殊字符
- 654321Ab/° 必须无效,因为 ° 不是有效的特殊字符,但现在它被视为正确的
这是我的 jsfiddle:http://jsfiddle.net/o6L3s14c/
我的附加方法脚本:
$.validator.addMethod("pwcheckspechars", function (value) {
return /[!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]/.test(value)
}, "The password must contain at least one special character");
您报告的规则检查字符串是否至少包含您的特殊字符之一。您提到的两个字符串都符合此规则(均包含 /
)。
第二个字符串包含您的规则中未包含的附加字符这一事实不会改变您测试的有效性(/
仍然存在)。
您可以添加另一种验证方法来检查您的字符串是否仅包含允许的字符,如下所示:
/^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]+$
可以解释为:
START (a-Z, A-Z, 0-9 or some special characters) one or more times
END
$.validator.addMethod("pwcheck", function(value) {
return /^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]+$/.test(value)
&& /[a-z]/.test(value) // has a lowercase letter
&& /\d/.test(value)//has a digit
&& /[!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]/.test(value)// has a special character
},"must consist lowercase letter, number and special characters");
我有不同的密码验证规则。他们中的大多数工作正常,但用于特殊字符的有点棘手。规则说:密码必须至少包含一个特殊字符(来自特殊字符列表)。我为 jquery validate 创建了额外的方法来处理这个问题,但出于某种原因,列表之外的字符被视为有效。
例如:
- 654321Ab/ 有效,因为 / 是可接受的特殊字符
- 654321Ab/° 必须无效,因为 ° 不是有效的特殊字符,但现在它被视为正确的
这是我的 jsfiddle:http://jsfiddle.net/o6L3s14c/
我的附加方法脚本:
$.validator.addMethod("pwcheckspechars", function (value) {
return /[!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]/.test(value)
}, "The password must contain at least one special character");
您报告的规则检查字符串是否至少包含您的特殊字符之一。您提到的两个字符串都符合此规则(均包含 /
)。
第二个字符串包含您的规则中未包含的附加字符这一事实不会改变您测试的有效性(/
仍然存在)。
您可以添加另一种验证方法来检查您的字符串是否仅包含允许的字符,如下所示:
/^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]+$
可以解释为:
START (a-Z, A-Z, 0-9 or some special characters) one or more times END
$.validator.addMethod("pwcheck", function(value) {
return /^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]+$/.test(value)
&& /[a-z]/.test(value) // has a lowercase letter
&& /\d/.test(value)//has a digit
&& /[!@#$%^&*()_=\[\]{};':"\|,.<>\/?+-]/.test(value)// has a special character
},"must consist lowercase letter, number and special characters");