В прикладной валидации данных адрес почти всегда рассматривается как совокупность независимых локальных компонентов: страна, регион/штат, город, почтовый индекс, административные коды и локализованные форматы записи. Библиотека Validator.js предоставляет набор инструментов, позволяющих проверять такие элементы с учётом международных стандартов и региональных особенностей.
Одним из базовых элементов адреса является код страны. В большинстве систем используется стандарт ISO 3166-1, представленный в двух основных форматах: alpha-2 и alpha-3.
Двухбуквенные коды стран применяются в веб-формах, API и базах данных как наиболее компактное представление.
validator.isISO31661Alpha2('KZ'); // true
validator.isISO31661Alpha2('US'); // true
validator.isISO31661Alpha2('USA'); // false
Использование alpha-2 формата предпочтительно в интерфейсах ввода и хранении данных, где важна компактность и совместимость.
Трёхбуквенные коды обеспечивают более читаемую идентификацию страны, часто применяются в аналитических системах и отчётности.
validator.isISO31661Alpha3('KAZ'); // true
validator.isISO31661Alpha3('USA'); // true
validator.isISO31661Alpha3('KZ'); // false
Региональные части адреса не имеют универсального стандарта, однако часто опираются на комбинации текстовой валидации и ограничений по формату.
Для регионов, штатов и областей часто используется ограничение по алфавитному составу:
validator.isAlpha('Almaty'); // true
validator.isAlpha('New York'); // false (из-за пробела)
В случаях составных названий применяются дополнительные настройки:
validator.isAlpha('NewYork', 'en-US'); // true
Для более сложных региональных названий применяется нормализация входных данных перед проверкой.
Город является менее формализованной частью адреса, однако валидация часто требуется для предотвращения числовых и синтаксически некорректных значений.
validator.isAlpha('Karaganda'); // true
validator.isAlpha('Paris123'); // false
При обработке реальных данных учитываются пробелы и дефисы:
validator.isAlpha('LosAngeles'); // true
validator.isAlpha('Los-Angeles'); // false без настроек
Расширенные проверки обычно комбинируются с регулярными выражениями.
Почтовый индекс является строго структурированной частью адреса,
зависящей от страны. Validator.js поддерживает проверку индексов через
метод isPostalCode, который принимает код страны как
параметр.
validator.isPostalCode('10001', 'US'); // true (США)
validator.isPostalCode('1000', 'BE'); // true (Бельгия)
validator.isPostalCode('ABCDE', 'US'); // false
Каждая страна имеет собственные правила:
validator.isPostalCode('SW1A 1AA', 'GB'); // true
Некоторые элементы адреса зависят от локали, особенно при обработке пользовательского ввода в интерфейсах.
Метод isLocale используется для проверки корректности
идентификатора локали (BCP 47).
validator.isLocale('en-US'); // true
validator.isLocale('ru-RU'); // true
validator.isLocale('kz-KZ'); // true
Локаль часто влияет на:
Для отдельных частей адреса часто применяются ограничения по типу символов:
validator.isAlpha('Astana'); // true
validator.isAlphanumeric('Region1'); // true
validator.isAlphanumeric('Region-1'); // false
Такие проверки полезны при обработке внутренних кодов регионов или пользовательских идентификаторов.
В реальных сценариях адрес не валидируется по частям изолированно. Применяется композиция проверок, где каждая часть адреса проходит собственный набор правил.
Пример структуры:
const isValidAddressLocalPart = (data) => {
return (
validator.isISO31661Alpha2(data.country) &&
validator.isAlpha(data.city, 'en-US', { ignore: ' -' }) &&
validator.isPostalCode(data.postalCode, data.country)
);
};
Такой подход позволяет учитывать:
Реальные данные часто содержат отклонения от стандарта: лишние пробелы, нестандартные разделители, смешение алфавитов.
Перед валидацией применяется нормализация:
const normalize = (value) =>
value.trim().replace(/\s+/g, ' ');
После нормализации данные становятся пригодными для строгих проверок Validator.js.
При работе с международными системами важно учитывать:
Validator.js в таких случаях используется как слой базовой фильтрации, а более сложная логика реализуется на уровне бизнес-правил.
validator.isAlpha('Москва', 'ru-RU'); // true
Локальные части адреса формируют зависимую систему:
Проверка каждого элемента отдельно без учёта контекста может приводить к ложным результатам, поэтому Validator.js используется как инструмент первичной структурной валидации, а не полного семантического анализа адреса.