2014-01-27 4 views
0

Я использую плагин validator jQuery, и мне нужно применить специальную проверку в определенном поле.jQuery validator custom regex failed

Что мне нужно, чтобы подтвердить, что она начинается с J должен следовать 1-3 цифр в диапазоне от 1 до 999.

Действительно регулярное: J1, J10, J599

Invalid регулярное выражение: 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() s, но я все еще не могу заставить его работать

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

Это потому, что он не работает. На самом деле никто из них не работает – AdRock

+0

, можете ли вы изменить свой код и можете ли вы дать jsfiddle? –

ответ

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 } 
); 
+0

Удалите часть '| 999', это делает регулярное выражение' 999'. Кроме того, '{1}' бесполезен. – Toto