Модуль проверки почтовых индексов в Validator.js реализован через
функцию isPostalCode, ориентированную на учёт национальных
форматов разных стран. Почтовые индексы не являются универсальными: в
одних странах используется только числовая форма фиксированной длины, в
других — буквенно-цифровые комбинации, иногда с пробелами или
дефисами.
Библиотека решает задачу унификации проверки за счёт набора локалей, каждая из которых соответствует конкретному формату.
isPostalCodeФункция проверки имеет следующий базовый синтаксис:
validator.isPostalCode(input, locale)
input — строка, содержащая предполагаемый почтовый
индексlocale — строка, определяющая страну или тип
форматаВозвращаемое значение:
true — если значение соответствует форматуfalse — если не соответствуетВалидация происходит через регулярные выражения, адаптированные под конкретные национальные стандарты.
Validator.js поддерживает широкий набор стран. Каждая локаль отражает уникальную структуру почтового кода.
anyРежим any допускает широкий спектр форматов.
Используется, когда страна неизвестна или требуется мягкая проверка.
validator.isPostalCode('12345', 'any'); // true
validator.isPostalCode('SW1A 1AA', 'any'); // true
Этот режим полезен для предварительной валидации, но не гарантирует соответствие конкретной стране.
GB)Формат включает буквы, цифры и пробел:
SW1A 1AAvalidator.isPostalCode('SW1A 1AA', 'GB'); // true
Особенность: строгая структура районов и секторов.
DE)Только числовой формат из 5 цифр:
10115validator.isPostalCode('10115', 'DE'); // true
FR)Пять цифр, первые две часто обозначают департамент:
75001validator.isPostalCode('75001', 'FR'); // true
IT)Пять цифр:
00100validator.isPostalCode('00100', 'IT'); // true
ES)Пять цифр, первая — регион:
28013validator.isPostalCode('28013', 'ES'); // true
NL)Комбинация из четырёх цифр и двух букв:
1234 ABvalidator.isPostalCode('1234 AB', 'NL'); // true
CH)Четыре цифры:
8001validator.isPostalCode('8001', 'CH'); // true
US)Пять цифр или ZIP+4:
1234512345-6789validator.isPostalCode('90210', 'US'); // true
validator.isPostalCode('90210-1234', 'US'); // true
CA)Чередование буква-цифра-буква:
K1A 0B1validator.isPostalCode('K1A 0B1', 'CA'); // true
JP)Семь цифр с дефисом:
123-4567validator.isPostalCode('123-4567', 'JP'); // true
IN)Шесть цифр:
110001validator.isPostalCode('110001', 'IN'); // true
CN) (в некоторых версиях как общий формат)Шесть цифр:
100000validator.isPostalCode('100000', 'CN'); // true
IL)Семь цифр:
6150001validator.isPostalCode('6150001', 'IL'); // true
SA)Пять цифр:
11564validator.isPostalCode('11564', 'SA'); // true
BR)Восемь цифр с дефисом:
12345-678validator.isPostalCode('12345-678', 'BR'); // true
ZA)Четыре цифры:
8001validator.isPostalCode('8001', 'ZA'); // true
AU)Четыре цифры:
2000validator.isPostalCode('2000', 'AU'); // true
NZ)Четыре цифры:
6011validator.isPostalCode('6011', 'NZ'); // true
При использовании isPostalCode важно учитывать, что
каждая локаль задаёт строгий контекст проверки. Ошибка выбора приводит к
ложным отрицаниям даже при корректном значении.
Пример типичной проблемы:
validator.isPostalCode('10115', 'US'); // false
validator.isPostalCode('10115', 'DE'); // true
Одно и то же значение интерпретируется по-разному в зависимости от страны.
Некоторые почтовые индексы включают:
GB, CA, NL)JP, BR, US)CA, NL)GB)Validator.js не нормализует строки автоматически. Перед проверкой обычно требуется:
validator.isPostalCode('k1a 0b1', 'CA'); // может вернуть false
validator.isPostalCode('75001', 'US'); // false
validator.isPostalCode(75001, 'FR'); // некорректное использование
При обработке пользовательских данных часто используется связка:
isPostalCodeПример логики:
function validatePostalCode(code, country) {
return validator.isPostalCode(code, country);
}
В реальных системах локаль обычно определяется через:
Если передана неподдерживаемая локаль, функция возвращает
false. Это требует явной обработки:
any при отсутствии данныхvalidator.isPostalCode('12345', 'XX'); // false
Validator.js не предназначен для интерпретации географического смысла кода. Проверяется исключительно синтаксис.
Это означает:
При необходимости поддерживать нестандартные форматы обычно используются:
isPostalCodeValidator.js в данном случае выступает как базовый слой синтаксической проверки, а не как полноценная адресная система.