Первый пример валидации

Библиотека Validator.js используется для проверки и очистки строковых данных в JavaScript и Node.js. Она особенно популярна при разработке API, форм регистрации, систем авторизации и серверной валидации.

Установка через npm:

npm install validator

Установка через yarn:

yarn add validator

Подключение в Node.js:

const validator = require('validator');

Подключение в ES Modules:

import validator from 'validator';

Первая проверка строки

Validator.js предоставляет набор функций для проверки строк. Каждая функция возвращает true или false.

Простейший пример:

import validator from 'validator';

const email = 'admin@example.com';

const result = validator.isEmail(email);

console.log(result);

Результат:

true

Если строка не соответствует формату email:

const email = 'admin@example';

console.log(validator.isEmail(email));

Результат:

false

Проверка email

Метод isEmail() — один из самых используемых методов библиотеки.

validator.isEmail('test@mail.com');

Результат:

true

Некорректный адрес:

validator.isEmail('testmail.com');

Результат:

false

Проверка с настройками

Validator.js позволяет задавать дополнительные параметры.

Пример запрета отображаемых имён:

validator.isEmail('Admin <admin@mail.com>', {
    allow_display_name: false
});

Результат:

false

Разрешение отображаемых имён:

validator.isEmail('Admin <admin@mail.com>', {
    allow_display_name: true
});

Результат:

true

Проверка URL

Метод isURL() используется для проверки интернет-адресов.

validator.isURL('https://google.com');

Результат:

true

Некорректный URL:

validator.isURL('google');

Результат:

false

Настройки проверки URL

Проверка только HTTPS:

validator.isURL('http://site.com', {
    protocols: ['https'],
    require_protocol: true
});

Результат:

false

Проверка HTTPS:

validator.isURL('https://site.com', {
    protocols: ['https'],
    require_protocol: true
});

Результат:

true

Проверка числа

Метод isNumeric() определяет, содержит ли строка только числа.

validator.isNumeric('12345');

Результат:

true

Некорректное значение:

validator.isNumeric('123abc');

Результат:

false

Разрешение отрицательных чисел

validator.isNumeric('-100', {
    no_symbols: false
});

Результат:

true

Проверка целого числа

Метод isInt() проверяет целые числа.

validator.isInt('25');

Результат:

true

Число с плавающей точкой:

validator.isInt('25.8');

Результат:

false

Ограничение диапазона

validator.isInt('18', {
    min: 18,
    max: 60
});

Результат:

true

Выход за пределы диапазона:

validator.isInt('70', {
    min: 18,
    max: 60
});

Результат:

false

Проверка даты

Метод isDate() используется для проверки даты.

validator.isDate('2025-01-10');

Результат:

true

Некорректная дата:

validator.isDate('2025-99-99');

Результат:

false

Проверка формата даты

validator.isDate('10.01.2025', {
    format: 'DD.MM.YYYY'
});

Результат:

true

Проверка JSON

Метод isJSON() проверяет строку JSON.

validator.isJSON('{"name":"Alex"}');

Результат:

true

Ошибочный JSON:

validator.isJSON('{name:"Alex"}');

Результат:

false

Проверка UUID

UUID часто используется в базах данных и API.

validator.isUUID('550e8400-e29b-41d4-a716-446655440000');

Результат:

true

Некорректный UUID:

validator.isUUID('12345');

Результат:

false

Проверка версии UUID

validator.isUUID(
    '550e8400-e29b-41d4-a716-446655440000',
    4
);

Проверка длины строки

Метод isLength() проверяет минимальную и максимальную длину строки.

validator.isLength('password123', {
    min: 8,
    max: 20
});

Результат:

true

Слишком короткая строка:

validator.isLength('123', {
    min: 8
});

Результат:

false

Проверка сильного пароля

Метод isStrongPassword() позволяет проверять сложность пароля.

validator.isStrongPassword('Qwerty123!');

Результат:

true

Слабый пароль:

validator.isStrongPassword('12345');

Результат:

false

Настройка требований

validator.isStrongPassword('Qwerty123!', {
    minLength: 8,
    minLowercase: 1,
    minUppercase: 1,
    minNumbers: 1,
    minSymbols: 1
});

Проверка пустой строки

Метод isEmpty() проверяет пустую строку.

validator.isEmpty('');

Результат:

true

Строка с текстом:

validator.isEmpty('hello');

Результат:

false

Игнорирование пробелов

validator.isEmpty('   ', {
    ignore_whitespace: true
});

Результат:

true

Проверка в реальном приложении

Типичный пример проверки данных формы регистрации:

import validator from 'validator';

function validateUser(data) {
    const errors = [];

    if (!validator.isEmail(data.email)) {
        errors.push('Некорректный email');
    }

    if (!validator.isLength(data.login, {
        min: 4,
        max: 20
    })) {
        errors.push('Логин должен содержать от 4 до 20 символов');
    }

    if (!validator.isStrongPassword(data.password)) {
        errors.push('Слишком слабый пароль');
    }

    return errors;
}

const user = {
    email: 'admin@mail.com',
    login: 'admin',
    password: 'Qwerty123!'
};

console.log(validateUser(user));

Результат:

[]

Комбинирование проверок

Validator.js часто используется совместно с обычными условиями JavaScript.

const login = 'admin_01';

const valid =
    validator.isLength(login, { min: 4, max: 20 }) &&
    validator.matches(login, /^[a-zA-Z0-9_]+$/);

console.log(valid);

Результат:

true

Проверка регулярным выражением

Метод matches() позволяет использовать регулярные выражения.

validator.matches('abc123', /^[a-z0-9]+$/);

Результат:

true

Проверка только букв:

validator.matches('hello', /^[A-Za-z]+$/);

Очистка данных

Validator.js умеет не только проверять, но и преобразовывать строки.

Удаление пробелов

validator.trim('   hello   ');

Результат:

'hello'

Экранирование HTML

Метод escape() защищает от HTML-инъекций.

validator.escape('<script>alert("xss")</script>');

Результат:

'&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;'

Удаление специальных символов

validator.blacklist('hello@world.com', '@.');

Результат:

'helloworldcom'

Проверка телефона

validator.isMobilePhone('+77001234567', 'kk-KZ');

Результат:

true

Некорректный номер:

validator.isMobilePhone('12345', 'kk-KZ');

Результат:

false

Проверка IP-адреса

validator.isIP('192.168.0.1');

Результат:

true

IPv6:

validator.isIP('2001:0db8:85a3:0000:0000:8a2e:0370:7334', 6);

Проверка кредитной карты

validator.isCreditCard('4111111111111111');

Результат:

true

Валидация данных API

Пример проверки входящего запроса:

app.post('/users', (req, res) => {
    const { email, age } = req.body;

    if (!validator.isEmail(email)) {
        return res.status(400).json({
            error: 'Некорректный email'
        });
    }

    if (!validator.isInt(age.toString(), {
        min: 18
    })) {
        return res.status(400).json({
            error: 'Возраст должен быть больше 18'
        });
    }

    res.json({
        success: true
    });
});

Частые ошибки

Передача числа вместо строки

Validator.js работает именно со строками.

Ошибка:

validator.isEmail(12345);

Правильно:

validator.isEmail(String(value));

Отсутствие проверки пустых значений

Неправильно:

validator.isEmail('');

Лучше:

if (
    !validator.isEmpty(email) &&
    validator.isEmail(email)
) {
    console.log('OK');
}

Избыточные регулярные выражения

Validator.js уже содержит готовые методы проверки.

Ненужный вариант:

/^[^\s@]+@[^\s@]+\.[^\s@]+$/

Предпочтительный вариант:

validator.isEmail(email);

Практический мини-проект

Полная проверка формы пользователя:

import validator from 'validator';

function validate(data) {
    const errors = {};

    if (validator.isEmpty(data.name || '')) {
        errors.name = 'Введите имя';
    }

    if (!validator.isEmail(data.email || '')) {
        errors.email = 'Некорректный email';
    }

    if (!validator.isMobilePhone(
        data.phone || '',
        'kk-KZ'
    )) {
        errors.phone = 'Некорректный телефон';
    }

    if (!validator.isStrongPassword(
        data.password || ''
    )) {
        errors.password = 'Слабый пароль';
    }

    return {
        valid: Object.keys(errors).length === 0,
        errors
    };
}

const result = validate({
    name: 'Alex',
    email: 'alex@mail.com',
    phone: '+77001234567',
    password: 'Qwerty123!'
});

console.log(result);

Результат:

{
    valid: true,
    errors: {}
}