2012-05-09 2 views
4

Я использую следующее regex для проверки 5-значного почтового индекса. Но это не работает.Ошибка проверки почтового индекса Javascript

var zipcode_regex = /[\d]{5,5}/; 
if (zipcode_regex.test($.trim($('#zipcode').val())) == false) 
alert('invalid zipcode'); 

Я также использую jQuery в фрагменте кода.

Пожалуйста, помогите ..

+1

* Но он не работает *. Что происходит и что вы ожидаете? Пожалуйста, укажите пример ввода и вывода и уточните. –

ответ

6

Ваше регулярное выражение также совпадает, если есть 5-значная подстрока где-то внутри вашей строки. Если вы хотите проверить «только ровно пять цифр, больше ничего», то вам не нужно anchor ваше регулярное выражение:

var zipcode_regex = /^\d{5}$/; 
if (zipcode_regex.test($.trim($('#zipcode').val())) == false) 
    alert('invalid zipcode'); 

И вы можете получить, что более легко:

if (!(/^\s*\d{5}\s*$/.test($('#zipcode').val()))) { 
    alert('invalid zipcode'); 
} 
+0

Спасибо Тиму .. ваш код работал отлично :) –

1

Просто используйте /^\d{5}$/.

корпус должен быть не менее 30 символов; вы ввели 21

+0

Можете ли вы объяснить, в чем разница и почему он помогает? –

+0

О, я просто упростил регулярное выражение, возможно, должен был написать его в разделе комментариев. Но я не думаю, что проблема OP имеет какое-либо отношение к этому регулярному выражению, это регулярное выражение соответствует точно 5 цифрам. Это может быть из-за чего-то. – neevek

+0

Ну, мы не знаем, что такое проблема OP. Но я думаю, что ты прав. Вам нужно привязать выражение с помощью '^' и '$'. В противном случае '\ d {5}' соответствует любой строке с ** не менее ** 5 цифр. Это то, к чему я стремился;) –

Смежные вопросы