jQuery验证器自定义正则表达式失败

时间:2014-01-27 13:00:35

标签: jquery regex validation

我正在使用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.');

1 个答案:

答案 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 }
);