Javascript 针对附加方法jquery validate中的特殊字符,使用正则表达式发出问题
我有不同的密码验证规则。他们中的大多数人都工作得很好,但对于特殊角色来说,这有点棘手。规则规定:密码必须至少包含一个特殊字符(从特殊字符列表中)。我为jQueryValidate创建了额外的方法来处理这个问题,但由于某些原因,列表之外的字符被视为有效字符 例如:Javascript 针对附加方法jquery validate中的特殊字符,使用正则表达式发出问题,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我有不同的密码验证规则。他们中的大多数人都工作得很好,但对于特殊角色来说,这有点棘手。规则规定:密码必须至少包含一个特殊字符(从特殊字符列表中)。我为jQueryValidate创建了额外的方法来处理这个问题,但由于某些原因,列表之外的字符被视为有效字符 例如: 654321Ab/有效,因为/是可接受的特殊字符 654321Ab/°必须无效,因为°不是有效的特殊字符,但现在它被视为正确字符 这是我的JSFIDLE: 我的附加方法脚本: $.validator.addMethod("pwche
- 654321Ab/有效,因为/是可接受的特殊字符
- 654321Ab/°必须无效,因为°不是有效的特殊字符,但现在它被视为正确字符
$.validator.addMethod("pwcheckspechars", function (value) {
return /[!@#$%^&*()_=\[\]{};':"\\|,.<>\/?+-]/.test(value)
}, "The password must contain at least one special character");
$.validator.addMethod(“pwcheckspechars”,函数(值){
return/[!@$%^&*()\=\[\]{};':“\\\\\\,.\/?+-]/.test(值)
},“密码必须至少包含一个特殊字符”);
您报告的规则检查字符串是否至少包含一个特殊字符。您提到的两个字符串都符合此规则(都包含/
)
第二个字符串包含规则中未包含的附加字符这一事实不会改变测试的有效性(/
仍然存在)
您可以添加另一个验证方法来检查字符串是否只包含允许的字符,如下所示:
/^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\\|,.<>\/?+-]+$
/^[a-zA-Z0-9!@$%^&*():“\\\\\[\]{};”,.\/?+-]+$
这可以解释为:
开始(a-Z、a-Z、0-9或某些特殊字符)一次或多次
结束
示例:您报告的规则检查字符串是否至少包含一个特殊字符。您提到的两个字符串都符合此规则(都包含
/
)
第二个字符串包含规则中未包含的附加字符这一事实不会改变测试的有效性(/
仍然存在)
您可以添加另一个验证方法来检查字符串是否只包含允许的字符,如下所示:
/^[a-zA-Z0-9!@#$%^&*()_=\[\]{};':"\\|,.<>\/?+-]+$
/^[a-zA-Z0-9!@$%^&*():“\\\\\[\]{};”,.\/?+-]+$
这可以解释为:
开始(a-Z、a-Z、0-9或某些特殊字符)一次或多次
结束
示例:$.validator.addMethod(“pwcheck”),函数(值){
return/^[a-zA-Z0-9!@$%^&*()\=\[\]{};':“\\\\\,.\/?+-]+$/.test(值)
&&/[a-z]/.test(value)//有一个小写字母
&&/\d/.test(value)//有一个数字
&&/[!@\\$%^&*()\=\[\]{};:“\\\\\\,.\/?+-]/.test(value)//有一个特殊字符
},“必须包含小写字母、数字和特殊字符”);
$.validator.addMethod(“pwcheck”),函数(值){
return/^[a-zA-Z0-9!@$%^&*()\=\[\]{};':“\\\\\,.\/?+-]+$/.test(值)
&&/[a-z]/.test(value)//有一个小写字母
&&/\d/.test(value)//有一个数字
&&/[!@\\$%^&*()\=\[\]{};:“\\\\\\,.\/?+-]/.test(value)//有一个特殊字符
},“必须包含小写字母、数字和特殊字符”);
太好了。我不知道我必须评估允许的字符。:)我发现了一个问题。例如,在JSFIDLE中尝试654Ab%
。错误消息说密码包含不允许的字符。问题是密码不包含无效字符。我想这是因为{8,}在字符串的末尾。我尝试删除它,因为我也有minlength和maxlength作为规则。但是它不起作用。任何建议。你是对的。我通过修改量词({8,}->+)更改了答案。现在正则表达式检查字符串是否至少有一个字符长,并且它只包含指定的字符。我通过将minlength和maxlength规则移到所需规则的后面来处理此问题。谢谢:)太好了。我不知道我必须评估允许的字符。:)我发现了一个问题。请尝试例如654Ab%
在JSFIDLE中。错误消息说密码包含不允许的字符。问题是密码不包含无效字符。我认为这是因为{8,}在字符串的末尾。我尝试删除它,因为我也有minlength和maxlength作为规则。但是它不起作用。任何建议。你是对的。我通过修改量词({8,}->+)更改了答案。现在,正则表达式检查字符串是否至少有一个字符长,并且只包含指定的字符。我通过将minlength和maxlength规则移到所需规则的后面来处理此问题。谢谢:)