我想在表单的密码字段中添加多种类型的正则表达式。我已经完成了以下工作。问题是,当我输入内容时,即使我在字段中输入了小写字母和数字,也会给出错误消息。
$.validator.addMethod "LowserCase", ((value, element, regexp) ->
return this.optional(element) || /[a-z]+/.test(value);
), "Password should have atleast one lowercase letter"
$.validator.addMethod "Uppercase", ((value, element, regexp) ->
return this.optional(element) || /[A-Z]+/.test(value);
), "Password should have atleast one uppercase letter"
$.validator.addMethod "Digit", ((value, element, regexp) ->
return this.optional(element) || /[0-9 -()+]+$/.test(value);
), "Password should have atleast one digit"
$("#user_password").rules "add",
required: true
minlength: 8
Uppercase: true
Digit: true
LowserCase: true
你能告诉我为什么会这样吗? ?或者我如何验证多个正则表达式并显示不同的错误消息
由于
此致
答案 0 :(得分:1)
你的问题根本与正则表达式无关。你有很多语法问题,我不确定这些问题是如何解决的。你错过了各种标点符号,比如括号,大括号,逗号和单词function
本身。
您的.rules()
方法......
$("#user_password").rules "add",
required: true
minlength: 8
Uppercase: true
Digit: true
LowserCase: true
看起来应该是这样......
$("#user_password").rules("add", { // <-- opening braces and parenthesis
required: true, // <-- a comma after ever rule
minlength: 8,
Uppercase: true,
Digit: true,
LowserCase: true
}); // <-- closing braces and parenthesis
请参阅:http://jqueryvalidation.org/rules/
您的每个自定义方法都存在类似的问题....
$.validator.addMethod "LowserCase", ((value, element, regexp) ->
return this.optional(element) || /[a-z]+/.test(value);
), "Password should have atleast one lowercase letter"
应该......
$.validator.addMethod("LowserCase", function(value, element) {
return this.optional(element) || /[a-z]+/.test(value);
}, "Password should have atleast one lowercase letter" );
请查看大括号和括号的确切位置以及单词function
的用法。您也不需要将第三个参数(regexp
)传递给函数,因为您没有在函数中使用它。
请参阅:http://jqueryvalidation.org/jQuery.validator.addMethod/
(注意,"Lower"
函数名称中的单词"LowerCase"
拼写错误为"Lowser"
,尽管您的代码正常工作,因为在使用此LowserCase
拼写错误时您保持一致另请注意,没有"atleast"
这样的单词; 总是拼写为两个单词"at least"
。)
工作演示:http://jsfiddle.net/WCq27/
修改强>:
Digit
规则的正则表达式应更改为此...
/[0-9]+/.test(value);
新版DEMO:http://jsfiddle.net/WCq27/1/
答案 1 :(得分:0)
您可以尝试针对类创建验证规则。您可以为特定类添加规则,如下所示:
$.validator.addMethod( // add a validation method
'letterSpaceFieldRegEx',
function (value) {
return /^([a-zA-Z\ ])*$/.test(value); // only letters and space
},
'* Only letters'
);
jQuery.validator.addClassRules('letterField', { // custom rule for class 'letterField'
letterSpaceFieldRegEx: true
});
现在您可以使用“letterField”类进行验证。
如:
$("#user_password").addClass('letterField');