Строгость проверки в Validator.js определяется совокупностью выбранных правил, параметров функций и предварительной нормализации входных данных. Библиотека не навязывает единую модель валидации, предоставляя гибкость настройки поведения под разные уровни требований: от мягкой проверки пользовательского ввода до жёсткого соответствия формальным спецификациям.
Под строгостью понимается степень допустимых отклонений входных данных от ожидаемого формата. В Validator.js это выражается через:
isEmail,
isNumeric, isLength);isEmail);Разные уровни строгости формируют разные сценарии применения: от пользовательских форм до системной валидации API.
Перед применением валидаторов важно привести данные к предсказуемому виду. Validator.js предоставляет базовые инструменты, а часть нормализации реализуется вручную.
validator.trim(' example@email.com ');
Удаление пробелов по краям снижает количество ложных ошибок при проверке строк.
Для некоторых типов данных (например, email) регистр не имеет значения:
validator.normalizeEmail('Example@Email.Com');
Нормализация email может включать:
Эти параметры напрямую влияют на строгость обработки.
Наиболее гибкая конфигурация реализуется через
isEmail.
validator.isEmail(email, options);
{
allow_display_name: false,
require_display_name: false,
allow_utf8_local_part: false,
require_tld: true,
allow_ip_domain: false,
domain_specific_validation: true,
blacklisted_chars: '',
host_blacklist: []
}
require_tld Указывает обязательность доменной
зоны (.com, .ru). При включении повышает
строгость, исключая локальные домены.
allow_utf8_local_part При false
запрещает Unicode в локальной части email, что соответствует более
строгим RFC-ограничениям.
allow_display_name Отключение исключает формат
"Имя <email@domain.com>", оставляя только чистый
адрес.
domain_specific_validation Включает дополнительные проверки для отдельных почтовых провайдеров.
Пример строгой проверки:
validator.isEmail(email, {
require_tld: true,
allow_utf8_local_part: false,
allow_display_name: false
});
Такой режим минимизирует вероятность принятия технически допустимых, но нежелательных форматов.
validator.isNumeric(str, options);
Параметры:
{
no_symbols: true
}
При no_symbols: true допускаются только цифры без
знаков, пробелов и разделителей.
validator.isInt(str, {
min: 0,
max: 100
});
Строгость увеличивается при:
+ и -.validator.isFloat(str, {
locale: 'en-US'
});
Локаль влияет на разделитель дробной части. Строгая конфигурация фиксирует формат и исключает альтернативные записи.
validator.isLength(str, { min: 10, max: 20 });
Строгая настройка обычно предполагает:
trim;Дополнительное усиление:
const normalized = validator.trim(str);
validator.isLength(normalized, { min: 10, max: 20 });
Validator.js включает matches, позволяющий задавать
полностью кастомные правила.
validator.matches(str, /^[a-z0-9_-]{3,16}$/);
Использование регулярных выражений обеспечивает:
Типичные сценарии:
Один валидатор редко обеспечивает достаточную точность. На практике используется цепочка проверок.
Пример:
const value = validator.trim(input);
const isValid =
validator.isLength(value, { min: 8, max: 20 }) &&
validator.matches(value, /^[a-zA-Z0-9]+$/) &&
!validator.contains(value, ' ');
Комбинации позволяют:
Некоторые валидаторы учитывают локаль:
isMobilePhoneisPostalCodeisFloatПример:
validator.isMobilePhone(number, 'ru-RU');
Строгая проверка предполагает фиксацию конкретного региона, без использования универсального режима.
validator.isMobilePhone(number, 'any', { strictMode: true });
При включении строгого режима:
Многие функции Validator.js допускают мягкие совпадения по умолчанию. Усиление строгости достигается отключением таких возможностей:
Пример ослабленного поведения:
validator.isAlphanumeric(str, 'en-US');
Более строгий вариант:
validator.isAlphanumeric(str, 'en-US', {
ignore: ''
});
Или дополнительная фильтрация через регулярное выражение.
Строгая система часто включает предварительные проверки до вызова Validator.js:
Пример:
const cleaned = input
.replace(/<[^>]*>/g, '')
.replace(/\s+/g, ' ')
.trim();
validator.isLength(cleaned, { min: 5, max: 50 });
В практических системах выделяются уровни:
Типовая структура:
isString,
isInt)isEmail, matches)Validator.js закрывает в основном шаги 2–4, тогда как шаг 5 реализуется прикладной логикой.
Эти факторы приводят к снижению предсказуемости проверки даже при использовании строгих функций.
Чрезмерная строгость может приводить к:
Поэтому строгие правила обычно вводятся на серверном уровне, тогда как на клиенте используется смягчённая версия валидации с последующей повторной проверкой.