我正在使用jQuery验证器插件,我需要在特定字段上应用自定义验证。
我需要验证的是,它以J开头,后跟1-3位数字,介于1到999之间。
有效正则表达式:J1,J10,J599
无效的正则表达式:H1,H10,H599
我已经提出了这个正则表达式,但它失败了。我得到一个警告说'失败':
/^[J]{1}\d{1,3}$/
我测试它是这样的:
if($('#bin').valid()) {
//passed
}
else {
alert('failed');
}
我还添加了一条规则:
$("#bin").rules("add", {
regexp: /^[J]{1}\d{1,3}$/,
required: true
});
并尝试了这3个addMethod()中的每个,但我仍然无法使其工作
//this fails validation
$.validator.addMethod(
"bin",
function(value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
},
"Please scan/enter a valid bin number."
);
//this fails validation
$.validator.addMethod("regexp", function(value, element, regexpr) {
return regexpr.test(value);
}, "Please scan/enter a valid bin number.");
//this fails validation
$.validator.addMethod('regexp', function(value, element, param) {
return this.optional(element) || value.match(param);
},'Please scan/enter a valid bin number.');
答案 0 :(得分:0)
找到导致问题的原因。
正如我想的那样是正则表达式。
更改
$("#bin").rules("add", {
regexp: /^[J]{1}\d{1,3}$/,
required: true
});
到
$("#bin").rules("add", {
regexp: /^([jJ]{1}[1-9][0-9]{0,2}|999)$/,
required: true }
);