2014-12-12 2 views
0

Хорошо, у меня есть следующая проблема. Я использовал jquery для проверки строки с регулярным выражением. Он отлично работает, но ...Регулярное выражение в jquery допускает только одно совпадение

В Нидерландах zipcodes составляют 4 цифры, а затем 2 символа, например. 1234AB. Теперь я использую следующее регулярное выражение, чтобы найти это: [0-9]{4}[A-Z]{2}.

Но когда кто-то типа 1234AB + 948203848, например. Он также возвращает true. И я не хочу этого! Как я могу заставить его возвращать false, если это не 4 цифры, за которыми следуют 2 символа?

Заранее спасибо.

JSBIN

+3

'/^[0-9] {4} [A-Z] {2} $ /'. '^' = начало строк. '$' = конец строки. –

+1

Вам не нужно использовать 'new RegExp', просто перейдите к регулярному выражению' var patt =/^ \ d {4} [A-Z] {2} $/' – Leo

ответ

2

Просто используйте якоря, чтобы указать начало слова (^) и конец его ($):

var patt = new RegExp("^[0-9]{4}[A-Z]{2}$"); 
        ^   ^

В соответствии с вашими комментариями, вы также хотите для использования ввода. Для этого вы можете использовать .toUpperCase():

тест --->JSBIN

$(document).ready(function(){ 
      $('[name=postcode]').keyup(function(){ 
      var str = $(this).val().toUpperCase(); 
      var patt = new RegExp("^[0-9]{4}[A-Z]{2}$"); 
      var res = patt.test(str); 
       console.log(res); 
      }); 
     }); 

В качестве альтернативы, вы можете использовать ^[0-9]{4}[a-zA-Z]{2}$ (обратите внимание на [a-zA-Z] часть), чтобы проверить, четыре буквы, независимо от того, верхний или нижний регистр.

3

Используйте анкеры ^ и $. Так что ваше регулярное выражение стало бы:

/^\d{4}[A-Z]{2}$/ 
Смежные вопросы