Библиотека Validator.js организована вокруг набора чистых функций, каждая из которых выполняет строго определённую задачу проверки или преобразования входных строковых данных. Основной принцип построения — атомарность методов: одна функция отвечает за одну проверку без побочных эффектов.
Внутри библиотеки отсутствует состояние. Все методы реализованы как статические функции, принимающие входное значение и возвращающие результат проверки или преобразования. Такой подход обеспечивает предсказуемость поведения и удобство композиции.
Методы валидации в Validator.js можно разделить на несколько категорий:
Каждая категория имеет собственные особенности обработки входных данных и возврата результата.
Наиболее многочисленная группа методов. Их задача — определить соответствие строки заданному критерию.
Общий формат:
validator.isEmail(str);
validator.isURL(str);
validator.isNumeric(str);
isEmail — проверка корректности email-адреса;isURL — проверка структуры URL;isIP — проверка IPv4 и IPv6;isJWT — проверка JSON Web Token.isNumeric — строка содержит число;isInt — целое число;isFloat — число с плавающей точкой;isDecimal — десятичный формат.isLength — длина строки в заданных пределах;isEmpty — пустая строка или строка пробелов;isAlpha — только буквенные символы;isAlphanumeric — буквы и цифры.isDate — валидность даты;isAfter — дата позже указанной;isBefore — дата раньше указанной.Отдельный класс методов занимается приведением строк к стандартному виду перед дальнейшей обработкой или хранением.
Характерная особенность — возврат модифицированной строки.
normalizeEmail — приведение email к каноническому
виду;trim — удаление пробелов по краям строки;escape — экранирование опасных символов;stripLow — удаление непечатаемых символов.Часть функций выполняет трансформацию данных без строгой нормализации.
Хотя формально такие функции пересекаются с нормализацией, их задача чаще связана с подготовкой данных к хранению или отображению.
Эта группа методов ориентирована на проверку строго определённых стандартов и протоколов.
isUUID — проверка универсального идентификатора;isHexColor — проверка HEX-цвета;isLatLong — координаты широты и долготы;isMimeType — проверка MIME-типа;isISO8601 — формат даты ISO.Особенность этих методов заключается в жёсткой зависимости от спецификаций RFC или международных стандартов.
Validator.js не содержит встроенной системы цепочек, однако структура функций позволяет легко комбинировать их вручную.
Пример логики композиции:
if (validator.isEmail(value) && validator.isLength(value, { min: 5, max: 255 })) {
// значение соответствует условиям
}
Такая модель делает библиотеку гибкой, но переносит ответственность за композицию на уровень прикладного кода.
Структура методов Validator.js основана на нескольких инженерных принципах:
Каждый метод не зависит от внешнего состояния и всегда возвращает одинаковый результат при одинаковом входе.
Несмотря на отсутствие TypeScript в базовой реализации, большинство методов ожидают строку, выполняя внутреннее приведение типов.
Значительная часть проверок реализована через регулярные выражения, особенно в методах формата:
Методы не изменяют глобальные переменные и не взаимодействуют с окружением.
Validator.js не использует исключения для сигнализации о невалидных данных. Вместо этого:
true или false;false, а не к ошибке
выполнения.Такой подход упрощает использование в условиях валидации форм и API.
Несмотря на работу преимущественно со строками, библиотека учитывает особенности Jav * aScript:
null и undefined;Пример поведения:
validator.isEmail(null); // false
validator.isEmail(undefined); // false
validator.isNumeric("123"); // true
Структурно методы можно представить как логические модули:
Такое разделение отражает внутреннюю архитектурную логику библиотеки, несмотря на отсутствие формальных модулей в API.
Общая стратегия обработки ошибок заключается в отказе от исключений в пользу булевых результатов. Это позволяет использовать методы напрямую в условиях без дополнительной обработки:
false;Такой подход ориентирован на сценарии серверной и клиентской валидации форм, где требуется быстрый и однозначный результат.