Метод isPostalCode

Метод isPostalCode в библиотеке Validator.js предназначен для проверки соответствия строки формату почтового индекса в зависимости от выбранной локали. Валидация выполняется на основе заранее определённых шаблонов для различных стран и регионов, что позволяет учитывать разнообразие национальных систем адресации.

validator.isPostalCode(input, locale)

Параметры

  • input — строка, содержащая предполагаемый почтовый индекс.
  • locale — строка, определяющая страну или региональный формат. Может принимать конкретные коды стран или значение any.

Метод возвращает логическое значение:

  • true — если строка соответствует формату выбранной локали;
  • false — если не соответствует.

Принцип работы проверки

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

  • фиксированная длина (например, 5 цифр);
  • комбинация цифр и букв;
  • наличие разделителей (пробел, дефис);
  • префиксы регионов или областей.

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

validator.isPostalCode(12345, 'US'); // true

Поддерживаемые локали

Validator.js поддерживает широкий набор региональных форматов. Среди наиболее часто используемых:

  • US — почтовые индексы США (5 цифр или формат ZIP+4)
  • GB — Великобритания (сложные алфавитно-цифровые форматы)
  • CA — Канада (формат вида A1A 1A1)
  • DE — Германия (5 цифр)
  • FR — Франция (5 цифр)
  • RU — Россия (6 цифр)
  • IT — Италия (5 цифр)
  • NL — Нидерланды (4 цифры + 2 буквы)
  • JP — Япония (3-4 цифры с дефисом)
  • AU — Австралия (4 цифры)

Отдельно используется значение:

  • any — проверка по всем доступным шаблонам, при которой строка считается валидной, если соответствует хотя бы одному формату.

Примеры использования

Проверка по конкретной стране

validator.isPostalCode('10115', 'DE'); // true
validator.isPostalCode('1011', 'DE');  // false

Формат с буквами и цифрами

validator.isPostalCode('K1A 0B1', 'CA'); // true
validator.isPostalCode('K1A-0B1', 'CA'); // false (разделитель не соответствует шаблону)

Проверка американского ZIP-кода

validator.isPostalCode('90210', 'US');     // true
validator.isPostalCode('90210-1234', 'US'); // true
validator.isPostalCode('9021', 'US');      // false

Особенности обработки входных данных

Метод не выполняет нормализацию строки в полном смысле, однако учитывает базовые случаи приведения типов. При этом:

  • пробелы внутри строки не удаляются автоматически;
  • регистр букв может быть значим в некоторых локалях (например, канадский формат);
  • символы, не входящие в допустимый шаблон, приводят к false.
validator.isPostalCode(' 10115 ', 'DE'); // false

Локаль any и её поведение

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

validator.isPostalCode('75008', 'any'); // true (соответствует формату FR)
validator.isPostalCode('ABCDE', 'any'); // false

Такой режим применяется в случаях, когда страна происхождения значения неизвестна или данные поступают из неоднородных источников.

Ограничения метода

Механизм проверки ориентирован исключительно на синтаксическую корректность:

  • не выполняется проверка существования почтового индекса;
  • отсутствует обращение к внешним базам данных;
  • не учитывается актуальность распределения индексов по регионам.

Проверка ограничивается форматом, а не семантикой значения.

Поведение при некорректных входных данных

Если входное значение не является строкой или числом, оно приводится к строковому представлению:

validator.isPostalCode(null, 'US');      // false
validator.isPostalCode(undefined, 'US'); // false
validator.isPostalCode({}, 'US');        // false

Пустые строки также считаются невалидными:

validator.isPostalCode('', 'US'); // false