Объединить два регулярных выражения - PullRequest
0 голосов
/ 05 октября 2011

Я использую jquery.validationengine.en.js для (пользовательской) проверки полей формы.Для одного поля я использую две пользовательских проверки.Я не хочу отображать оба сообщения проверки для поля.Он должен отображать только одно сообщение за раз.Как это сделать?

Пожалуйста, найдите код ниже Примечание: allzero используется и в некоторых других областях.

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

HTML код:

<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 ]

2 голосов
/ 05 октября 2011

Один из способов - всегда требовать ненулевую цифру где-то в строке. Это можно сделать с помощью регулярного выражения [0-9]*[1-9][0-9]*. Однако вы теряете возможность легко проверять длину строки. Это может быть преодолено предварительным утверждением, результатом которого является следующее регулярное выражение:

/^(?=[0-9]{8,15}$)[0-9]*[1-9][0-9]*$/
1 голос
/ 03 января 2013

Вот как я мог бы сделать это при использовании функции:

        "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]]" ...
1 голос
/ 05 октября 2011

Глядя на инструкции по использованию механизма проверки (на 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...