В библиотеке Validator.js ограничения представляют собой набор правил, применяемых к строковым значениям для проверки их соответствия ожидаемому формату, диапазону или структуре. Архитектура ограничений построена вокруг принципа независимых проверок, каждая из которых выполняет строго определённую функцию и возвращает булев результат.
Ограничения можно условно разделить на несколько категорий: строковые, числовые, форматные, структурные и пользовательские. Такое разделение позволяет комбинировать проверки без потери предсказуемости поведения.
Строковые ограничения являются базовыми и применяются к значениям, которые трактуются как текстовые данные.
Основные проверки:
Длина строки
isLength(str, { min }))isLength(str, { max }))isLength(str, { min, max }))Пустые значения
isEmpty)isEmpty)Обрезка пробелов Validator.js не изменяет строку
автоматически, но многие ограничения предполагают предварительное
приведение к нормализованному виду (например, trim до
проверки длины)
Строковые ограничения часто применяются совместно, образуя базовый слой валидации пользовательского ввода.
Хотя Validator.js работает со строками, числовые ограничения реализуются через попытку интерпретации строки как числа.
Основные функции:
Проверка целого числа
isInt(value, { min, max })Проверка числа с плавающей точкой
isFloat(value, { min, max })Диапазоны значений
min)max)Особенность числовых ограничений заключается в том, что входное значение должно быть строкой, содержащей корректное числовое представление. Любые посторонние символы автоматически приводят к провалу проверки.
Форматные ограничения являются одной из наиболее часто используемых групп и предназначены для проверки структурированных данных.
Распространённые проверки:
isEmail(value) Проверяет соответствие стандартному
формату электронной почты с учётом локальной и доменной части.URL
isURL(value) Поддерживает проверку протоколов, доменов,
портов и путей.IP-адреса
isIP(value, version) Поддержка IPv4 и IPv6.Телефонные номера
isMobilePhone(value, locale) Зависит от локали и
региональных правил формата.Форматные ограничения ориентированы на строгую структуру данных и минимизируют вероятность принятия некорректных значений.
Validator.js предоставляет универсальный механизм проверки через регулярные выражения.
matches(value, pattern, modifiers)Регулярные выражения используются для реализации произвольных ограничений, выходящих за рамки встроенных функций. Это позволяет задавать:
Гибкость этого механизма компенсируется необходимостью аккуратного проектирования выражений, поскольку ошибки в шаблоне приводят к ложным результатам валидации.
В реальных сценариях ограничения редко применяются изолированно. Validator.js предполагает последовательное комбинирование проверок.
Типичный пример цепочки:
Порядок применения имеет значение: ранний отказ на простых проверках снижает вычислительную нагрузку и упрощает диагностику ошибок.
Помимо встроенных функций, Validator.js допускает использование внешней логики для определения допустимости значения.
Пользовательские ограничения реализуются через:
Такие ограничения применяются в случаях, когда стандартных проверок недостаточно, например:
Validator.js не всегда рассматривает пустую строку как ошибку. Поведение зависит от конкретной функции.
isEmptyЭто создаёт необходимость явного определения политики обработки отсутствующих данных на уровне приложения.
Ограничения Validator.js предполагают, что входные данные уже приведены к строковому виду. Однако на практике часто требуется дополнительная нормализация:
Нормализация влияет на результат проверки, особенно в случаях строгих форматных ограничений.
Каждое ограничение возвращает булево значение, не выбрасывая исключений. Это определяет модель обработки ошибок:
true — значение соответствует ограничениюfalse — значение нарушает правилоОтсутствие исключений делает Validator.js предсказуемым инструментом, интегрируемым в цепочки обработки данных без необходимости использования try/catch для валидации.
При построении систем обработки данных результат ограничений часто агрегируется в структуру ошибок, где каждое правило соответствует отдельному сообщению или коду.