Метод isPostalCode в библиотеке Validator.js
предназначен для проверки соответствия строки формату почтового индекса
в зависимости от выбранной локали. Валидация выполняется на основе
заранее определённых шаблонов для различных стран и регионов, что
позволяет учитывать разнообразие национальных систем адресации.
validator.isPostalCode(input, locale)
any.Метод возвращает логическое значение:
true — если строка соответствует формату выбранной
локали;false — если не соответствует.В основе метода лежит сопоставление входной строки с регулярными выражениями, специфичными для каждой локали. Каждая страна использует собственную структуру почтовых кодов:
Перед выполнением проверки входное значение приводится к строковому типу. Это позволяет обрабатывать числовые значения, переданные без явного преобразования.
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 (разделитель не соответствует шаблону)
validator.isPostalCode('90210', 'US'); // true
validator.isPostalCode('90210-1234', 'US'); // true
validator.isPostalCode('9021', 'US'); // false
Метод не выполняет нормализацию строки в полном смысле, однако учитывает базовые случаи приведения типов. При этом:
false.validator.isPostalCode(' 10115 ', 'DE'); // false
При использовании значения 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