Регулярное выражение Javascript для соответствия 5 или 9-значному почтовому индексу - PullRequest
8 голосов
/ 17 сентября 2009

У меня есть проблема, похожая на мою недавнюю публикацию, но с валидатором почтового индекса я пытаюсь перейти к процессу проверки JavaScript мой сценарий выглядит так:

    var regPostalCode = new RegExp("\\d{5}(-\d{4})?");
    var postal_code = $("input[name='txtzipcode']").val();
    if (regPostalCode.test(postal_code) == false) {
        bValid = false;
        msg = msg + '<li>Invalid Zip Code.</li>';
    }

Из моего недавнего поста я узнал о побеге, который мне был нужен в начале. По сути, эта функция проверяет почтовый индекс 22601, который является правильным, но он не должен проверять 22601-1. Там должно быть 4 цифры после тире, как 22601-9999. Как будто вторая часть проверки всегда верна. Опять же, это выражение сработало в прошлом для меня. Я что-то пропустил? Нужен ли еще один escape-символ?

Ответы [ 2 ]

17 голосов
/ 17 сентября 2009

Добавьте якоря: new RegExp("^\\d{5}(-\\d{4})?$"). Это заставляет механизм регулярных выражений принимать совпадение, только если оно начинается с первого символа строки (^) и заканчивается в конце сопоставляемой строки ($).

Обратите внимание, что в регулярном выражении, которое вы задали в своем вопросе, может быть опечатка: во втором \d отсутствует обратная косая черта.

1 голос
/ 17 сентября 2009

Измените свое регулярное выражение на:

new RegExp("^\\d{5}(-\\d{4})?$")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...