Работа с географическими данными валидации в Validator.js опирается на несколько устойчивых форматов представления координат, адресных идентификаторов и региональных кодов. Каждый формат имеет собственные правила записи, диапазоны допустимых значений и типичные ошибки, возникающие при пользовательском вводе или интеграции внешних API.
Наиболее распространённый формат геоданных — пара чисел, представляющих широту и долготу в десятичной системе.
Общий вид:
latitude, longitude
Пример:
51.1694, 71.4491
Любое отклонение от этих границ считается невалидным с точки зрения географической системы координат.
В Validator.js используется метод:
isLatLong(value)Он проверяет строку формата:
"lat,lon"
Особенности поведения:
использование точки с запятой вместо запятой
локализация с запятой как десятичным разделителем:
51,1694, 71,4491добавление единиц измерения:
51.1694° N, 71.4491° EИногда координаты поступают не парой, а раздельными полями. В этом случае применяется комбинированная проверка:
isDecimalisFloatЛогика валидации строится в два этапа:
Пример логики:
широта:
-90 <= value <= 90долгота:
-180 <= value <= 180Такой подход используется в API, где координаты хранятся в отдельных колонках базы данных.
Формат DMS (Degrees, Minutes, Seconds):
51°10'9.84"N 71°26'56.76"E
Особенности:
В Validator.js отсутствует встроенная поддержка DMS. Для проверки применяется:
GeoJSON используется для описания геометрических объектов.
Пример структуры Point:
{
"type": "Point",
"coordinates": [71.4491, 51.1694]
}
Особенность порядка:
Validator.js не предоставляет нативной проверки GeoJSON-структур. Используется комбинированный подход:
isJSON (проверка валидности JSON-строки)isLatLong или числовые
диапазоныПример логики проверки:
typecoordinatesПочтовые индексы часто используются как упрощённая географическая привязка.
В Validator.js применяется:
isPostalCode(value, locale)US — 5 или 9 цифрGB — буквенно-цифровой форматCA — канадский формат с пробеломRU — 6 цифрОсобенности:
Адреса не имеют единого международного стандарта валидации. Типичный адрес:
ул. Абая 10, Караганда, Казахстан
Проблемы валидации:
Validator.js не содержит встроенной функции для проверки адресов.
Используемые подходы:
IP-адреса часто используются как косвенная географическая привязка.
Методы:
isIP(value)Поддерживаются версии:
Ограничение: IP не является прямым географическим форматом, но применяется для определения региона через базы геолокации.
Перед валидацией часто требуется приведение данных к единому виду:
Пример нормализации координат:
"51°10'9.84\"N, 71°26'56.76\"E"
→
"51.1694, 71.4491"
Ключевая проблема геоданных — различие десятичного разделителя:
в англоязычных форматах используется точка:
51.1694в части локалей используется запятая:
51,1694Validator.js ожидает строго точечный формат для чисел, что требует предварительной нормализации входных данных.
В реальных приложениях географические данные редко проверяются одной функцией. Обычно используется цепочка проверок:
Пример логики:
isLatLongisDecimal для отдельных значенийГеографические форматы обладают рядом особенностей:
Поэтому Validator.js чаще используется как первый уровень фильтрации, а не как полноценная географическая система валидации.