结合两个正则表达式

时间:2011-10-05 11:38:04

标签: jquery regex jquery-validate

我正在使用jquery.validationengine.en.js来(自定义)验证我的表单字段。对于一个字段,我使用两个自定义验证。我不想显示字段的验证消息。它应该一次只显示一个消息。怎么做?

请找到以下代码 注意:allzero也被其他一些领域使用。

   "phone":   {
                  "regex": /^[0-9]{8,15}$/,
                  "alertText": "* Invalid phone number"
              },
   "allzero": {
                  "regex": /([^((\+)*(0*))])/,
                  "alertText": "* Invalid number"
              },

HTML code:

<input type="text" name="phone" id="phone" class="textBox textNormal validate[maxSize[30],custom[onlyNumberSp],custom[phonenumber],custom[allzero]]" onfocus="jQuery('#adduserform').validationEngine('attach',{Overflown:false})">

    <input type="text" name="mobile" id="mobile" class="textBox textNormal validate[maxSize[30],custom[onlyNumberSp],custom[mobile],custom[allzero]]" value="" onfocus="jQuery('#adduserform').validationEngine('attach',{Overflown:false})">

3 个答案:

答案 0 :(得分:2)

一种方法是始终在字符串中的某处需要非零数字。这可以通过正则表达式部分[0-9]*[1-9][0-9]*来完成。但是,您失去了轻松检查字符串长度的能力。这可以通过前瞻性断言来克服,从而产生以下正则表达式:

/^(?=[0-9]{8,15}$)[0-9]*[1-9][0-9]*$/

答案 1 :(得分:1)

查看验证引擎使用说明(位于https://github.com/posabsolute/jQuery-Validation-Engine),似乎可以使用自定义函数调用(funcCall验证程序)验证字段。因此,您应该能够使用函数一个接一个地检查两个正则表达式,并返回相应的错误消息,如果其中一个不匹配:

function checkPhoneNumber(field, rules, i, options){
    if (!field.val().match(/^[0-9]{8,15}$/))
        return "* Invalid phone number";
    else if (!field.val().match(/([^((\+)*(0*))])/))
        return "* Invalid number";
}

答案 2 :(得分:1)

使用函数时,我可以这样做:

        "phoneORallzero": { 
            "func": function(field, rules, i, options){
                if (field.val().match(/^[0-9]{8,15}$/))
                    return true;
                else if (field.val().match(/([^((\+)*(0*))])/))
                    return true;
            },
            "alertText": "* invalid phone or number."
        }

在HTML代码中:

... class = "validate[custom[phoneORallzero]]" ...