【问题标题】:jQuery validator custom regex failsjQuery 验证器自定义正则表达式失败
【发布时间】:2014-01-27 13:00:34
【问题描述】:

我正在使用 jQuery 验证器插件,我需要在特定字段上应用自定义验证。

我需要验证的是它以 J 开头必须后跟 1 到 999 之间的 1-3 位数字。

有效的正则表达式: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.');

【问题讨论】:

  • 您的代码包含:*/
  • 那是因为它不起作用。事实上,它们都不起作用
  • 你能编辑你的代码吗,你能给jsfiddle吗?
  • 失败的是正则表达式而不是代码。刚试过这个 /^[a-z]{1,10}$/ 并放入 adrock 就通过了

标签: jquery regex validation


【解决方案1】:

找到导致问题的原因。

就像我想象的那样是正则表达式。

改变了

$("#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 }
);

【讨论】:

  • 删除|999 部分,它使正则表达式匹配999。还有,{1} 没用。
猜你喜欢
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
相关资源
最近更新 更多