Валидация длины строк является одной из базовых операций при обработке пользовательского ввода. В библиотеке Validator.js для этого используется набор функций, позволяющих проверять минимальную и максимальную длину строки, а также комбинировать ограничения в едином правиле.
Основной инструмент для работы с длиной — функция
isLength, которая позволяет задать диапазон допустимых
значений через объект параметров.
Функция isLength(str, options) принимает строку и объект
настроек, содержащий границы длины:
min — минимально допустимая длинаmax — максимально допустимая длинаЕсли значение выходит за пределы диапазона, проверка возвращает
false.
import validator fr om 'validator';
validator.isLength('Hello', { min: 3, max: 10 });
// true
validator.isLength('Hi', { min: 3, max: 10 });
// false
validator.isLength('This is a very long string', { min: 3, max: 10 });
// false
При отсутствии одного из параметров проверка становится односторонней. Например, можно задать только минимальную длину:
validator.isLength('Validator', { min: 5 });
// true
validator.isLength('Hi', { min: 5 });
// false
Или только максимальную:
validator.isLength('Short text', { max: 20 });
// true
validator.isLength('This text is definitely too long for lim it', { max: 20 });
// false
Validator.js учитывает длину строки в символах JavaScript, а не в байтах. Это важно при работе с эмодзи и символами Unicode, которые могут занимать больше одного байта.
validator.isLength('???', { min: 3, max: 3 });
// true
Однако при наличии сложных Unicode-комбинаций (например, составных эмодзи) поведение может отличаться от визуального восприятия длины строки.
Хотя isLength является универсальным решением,
библиотека также часто используется в сочетании с отдельными проверками,
чтобы повысить читаемость логики валидации.
function isMinLength(str, min) {
return validator.isLength(str, { min });
}
isMinLength('example', 3);
// true
function isMaxLength(str, max) {
return validator.isLength(str, { max });
}
isMaxLength('example', 10);
// true
Такой подход упрощает композицию правил при построении сложных схем валидации.
Ограничение длины используется в большинстве форм пользовательского ввода:
Пример валидации имени пользователя:
const username = 'alex_dev';
const validUsername = validator.isLength(username, {
min: 3,
max: 20
});
Для паролей часто задаются более строгие ограничения:
const password = 'qwerty123';
const validPassword = validator.isLength(password, {
min: 8,
max: 64
});
При использовании isLength необходимо учитывать ряд
особенностей:
Поэтому перед проверкой длины часто выполняется нормализация входных данных:
const value = (input || '').trim();
validator.isLength(value, { min: 1, max: 50 });
В реальных сценариях проверка длины комбинируется с другими методами Validator.js:
const email = 'user@example.com';
const name = 'John';
const isValid =
validator.isEmail(email) &&
validator.isLength(name, { min: 2, max: 30 });
Такой подход позволяет формировать последовательные правила без необходимости создания сложных структур.
Помимо isLength, иногда применяется прямое использование
свойства length:
if (str.length >= 3 && str.length <= 10) {
// допустимая длина
}
Однако использование Validator.js обеспечивает единообразие логики и упрощает поддержку кода, особенно в проектах с множественными правилами валидации.
В отдельных случаях важна не символная, а байтовая длина строки. Для этого используется отдельная функция:
validator.isByteLength('Hello', { min: 1, max: 10 });
Она применяется, например, при ограничениях на уровне баз данных или сетевых протоколов, где размер данных определяется в байтах, а не в символах.