Функции библиотеки validator.js построены на принципе предсказуемых и строго определённых возвращаемых значений. Основная модель работы основана на обработке строковых входных данных и возврате либо булевых значений, либо нормализованных строк, либо значений, приведённых к специализированным форматам.
Большая часть валидаторов ориентирована на проверку корректности
данных без их изменения. В таких случаях результатом работы функции
всегда выступает boolean.
Типичный пример — проверка формата email:
validator.isEmail('user@example.com')
Результат:
true — строка соответствует формату emailfalse — строка не проходит валидациюАналогичная модель используется в большинстве функций проверки:
isURLisIntisAlphaisNumericisUUIDОбщая характеристика таких методов — отсутствие побочных эффектов и неизменность входного значения. Вход всегда интерпретируется как строка, даже если переданы числа или другие типы, что приводит к их неявному приведению.
Часть методов библиотеки выполняет не только проверку, но и преобразование данных. В таких случаях возвращается строка, часто модифицированная по заданным правилам.
Примеры:
validator.trim(' text ')
Результат:
'text'validator.escape('<div>')
Результат:
'<div>'validator.normalizeEmail('USER@Example.COM')
Результат:
'user@example.com' (в зависимости от настроек
нормализации)Такие функции относятся к категории трансформеров. Их ключевая особенность — детерминированность преобразования: одинаковый вход всегда даёт одинаковый результат при одинаковых опциях.
Некоторые функции изменяют тип или формат результата в зависимости от переданных параметров. Это создаёт вариативность возвращаемых значений при сохранении общей логики.
Пример:
validator.isBoolean('true', { loose: true })
Здесь результат зависит от режима:
'true' и
'false'Подобная модель характерна для методов, где допустимы разные интерпретации входных данных.
Библиотека всегда работает с входными значениями как со строками. Это фундаментальный аспект поведения:
validator.isInt(10)
Фактически обрабатывается как:
validator.isInt('10')
Такой подход исключает неожиданные различия между типами JavaScript
(number, string, boolean) и
обеспечивает единообразную обработку.
Особенности:
null и undefined приводятся к строковому
видуtoString()Булевы значения являются конечной точкой большинства операций. Однако их семантика в контексте библиотеки строго бинарна:
true — соответствие условиям проверкиfalse — любое отклонение от ожидаемого форматаНикаких промежуточных состояний или кодов ошибок не предусмотрено. Это упрощает композицию функций в цепочках логики приложения.
При передаче некорректных или неожиданных значений библиотека не выбрасывает исключения в стандартных сценариях использования. Вместо этого возвращается:
false — для функций проверкиПример:
validator.isEmail({})
Результат:
falsevalidator.trim(null)
Результат:
'null'Такой подход снижает вероятность аварийного завершения выполнения программы и переносит контроль на уровень логики приложения.
Хотя библиотека не является классическим chainable API, её функции часто используются последовательно. В таких сценариях тип возвращаемого значения определяет дальнейшую обработку:
const value = validator.trim(input);
if (validator.isEmail(value)) {
// обработка email
}
Здесь наблюдается разделение:
Одной из ключевых характеристик библиотеки является жёсткая фиксация типов возвращаемых значений:
booleanstringОтсутствие динамического изменения типа результата снижает количество скрытых ошибок в коде.
Некоторые функции нормализации email и URL могут возвращать разные строки в зависимости от флагов:
validator.normalizeEmail(email, {
gmail_remove_dots: true
})
Результат может отличаться даже при одинаковом входе, но тип остаётся
неизменным — всегда string.
С точки зрения JavaScript, библиотека опирается на базовые типы:
boolean — результат валидацииstring — результат преобразованияТакое поведение обеспечивает совместимость с динамической природой языка и минимизирует необходимость предварительной типизации данных перед использованием функций библиотеки.