Что такое Validator.js

Validator.js — популярная библиотека для проверки и очистки строковых данных в JavaScript. Используется как в браузере, так и в серверных приложениях на Node.js. Основная задача библиотеки — обеспечить надёжную валидацию пользовательского ввода: email-адресов, URL, UUID, IP-адресов, дат, номеров банковских карт, JSON-строк и множества других типов данных.

Validator.js особенно востребован в:

  • backend-разработке на Node.js;
  • REST API;
  • формах регистрации и авторизации;
  • системах обработки пользовательского ввода;
  • Express-приложениях;
  • middleware для проверки запросов;
  • системах защиты от некорректных данных.

Установка библиотеки

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

npm install validator

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

yarn add validator

Подключение Validator.js

CommonJS

const validator = require('validator');

ES Modules

import validator from 'validator';

Особенности библиотеки

Validator.js работает преимущественно со строками.

Большинство методов:

  • принимают строку;
  • возвращают true или false;
  • имеют дополнительные параметры настройки;
  • не изменяют исходные данные.

Пример:

import validator from 'validator';

const result = validator.isEmail('admin@example.com');

console.log(result); // true

Проверка email

Метод isEmail()

Один из наиболее используемых методов библиотеки.

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

Результат:

true

Некорректный email

validator.isEmail('invalid-email');

Результат:

false

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

Метод поддерживает множество опций.

validator.isEmail('admin@gmail.com', {
  allow_display_name: false,
  require_tld: true
});

Часто используемые параметры

Параметр Назначение
require_tld Требует наличие доменной зоны
allow_utf8_local_part Разрешает UTF-8 символы
allow_ip_domain Разрешает IP вместо домена
domain_specific_validation Дополнительные проверки популярных доменов

Проверка URL

Метод isURL()

Проверяет корректность URL-адреса.

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

Результат:

true

Проверка некорректного URL

validator.isURL('not-url');

Результат:

false

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

validator.isURL('http://localhost:3000', {
  protocols: ['http', 'https'],
  require_protocol: true,
  require_host: true
});

Проверка UUID

Метод isUUID()

UUID широко используется для идентификаторов.

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

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

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

Поддерживаемые версии

  • 1
  • 2
  • 3
  • 4
  • 5
  • all

Проверка JSON

Метод isJSON()

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

Некорректный JSON

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

Результат:

false

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

Метод isIP()

validator.isIP('192.168.1.1');

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

validator.isIP('192.168.1.1', 4);
validator.isIP('2001:db8::ff00:42:8329', 6);

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

Метод isMobilePhone()

Validator.js поддерживает большое количество локалей.

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

Проверка нескольких локалей

validator.isMobilePhone(
  '+77001234567',
  ['kk-KZ', 'ru-RU']
);

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

Метод isDate()

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

Настройка формата даты

validator.isDate('01.05.2025', {
  format: 'DD.MM.YYYY',
  strictMode: true
});

strictMode

При включении строгого режима библиотека:

  • проверяет реальность даты;
  • запрещает некорректные комбинации;
  • требует точное соответствие формату.

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

Метод isNumeric()

validator.isNumeric('12345');

Отрицательные числа

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

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

Метод isInt()

validator.isInt('100');

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

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

Проверка дробных чисел

Метод isFloat()

validator.isFloat('10.55');

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

validator.isFloat('99.9', {
  min: 0,
  max: 100
});

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

Метод isLength()

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

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

Метод isEmpty()

validator.isEmpty('');

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

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

Проверка алфавитных символов

Метод isAlpha()

validator.isAlpha('Hello');

Поддержка локалей

validator.isAlpha('Привет', 'ru-RU');

Проверка буквенно-цифровых строк

Метод isAlphanumeric()

validator.isAlphanumeric('User123');

Проверка банковской карты

Метод isCreditCard()

validator.isCreditCard('4111111111111111');

Проверка хеша

Метод isHash()

validator.isHash(
  '5d41402abc4b2a76b9719d911017c592',
  'md5'
);

Проверка JWT

Метод isJWT()

validator.isJWT(token);

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

Метод isMACAddress()

validator.isMACAddress('00:1B:44:11:3A:B7');

Проверка MIME-типа

Метод isMimeType()

validator.isMimeType('application/json');

Проверка портов

Метод isPort()

validator.isPort('3000');

Проверка ISBN

Метод isISBN()

validator.isISBN('9785179467425');

Проверка IBAN

Метод isIBAN()

validator.isIBAN('DE89370400440532013000');

Проверка BIC/SWIFT

Метод isBIC()

validator.isBIC('DEUTDEFF');

Проверка hexadecimal

Метод isHexadecimal()

validator.isHexadecimal('FFAA00');

Проверка цвета

Метод isHexColor()

validator.isHexColor('#3498db');

Проверка slug

Метод isSlug()

validator.isSlug('my-awesome-article');

Проверка Base64

Метод isBase64()

validator.isBase64('SGVsbG8=');

Санитарная обработка данных

Validator.js содержит не только валидаторы, но и инструменты очистки данных.


Метод trim()

Удаляет пробелы по краям строки.

validator.trim('   hello   ');

Результат:

'hello'

Метод escape()

Экранирует HTML-символы.

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

Результат:

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

Метод используется для защиты от XSS-атак.


Метод stripLow()

Удаляет непечатные символы.

validator.stripLow('hello\u0000world');

Метод blacklist()

Удаляет запрещённые символы.

validator.blacklist('hello123', '123');

Результат:

'hello'

Метод whitelist()

Оставляет только разрешённые символы.

validator.whitelist('abc123', 'a-z');

Результат:

'abc'

Использование с Express

Validator.js часто используется в middleware.

Пример проверки данных запроса

import express from 'express';
import validator from 'validator';

const app = express();

app.use(express.json());

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

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

  if (!validator.isLength(password, {
    min: 8
  })) {
    return res.status(400).json({
      error: 'Слишком короткий пароль'
    });
  }

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

Комплексная валидация формы

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

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

  if (!validator.isLength(data.password, {
    min: 8
  })) {
    errors.push('Пароль слишком короткий');
  }

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

  return {
    isValid: errors.length === 0,
    errors
  };
}

Важные особенности работы

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

Большинство методов ожидают строковый тип.

Некорректно:

validator.isEmail(null);

Корректно:

validator.isEmail(String(value));

Проверка типов перед валидацией

function safeEmailCheck(value) {
  if (typeof value !== 'string') {
    return false;
  }

  return validator.isEmail(value);
}

Преимущества Validator.js

Большое количество валидаторов

Библиотека содержит десятки готовых методов:

  • email;
  • URL;
  • UUID;
  • IP;
  • JSON;
  • JWT;
  • банковские карты;
  • номера телефонов;
  • даты;
  • MIME;
  • хеши;
  • ISBN;
  • IBAN;
  • hexadecimal;
  • slug;
  • Base64.

Простота API

Большинство методов имеют одинаковый стиль использования:

validator.method(value, options);

Поддержка Node.js и браузера

Validator.js можно использовать:

  • в React;
  • в Vue;
  • в Angular;
  • в Express;
  • в NestJS;
  • в чистом JavaScript.

Гибкая настройка

Многие методы поддерживают:

  • строгий режим;
  • диапазоны;
  • локали;
  • пользовательские настройки;
  • ограничения форматов.

Недостатки библиотеки

Ориентация на строки

Validator.js плохо подходит для:

  • сложных объектов;
  • вложенных структур;
  • схем данных;
  • типизированной валидации.

Для подобных задач чаще используются:

  • Joi;
  • Yup;
  • Zod;
  • Ajv.

Отсутствие схемной валидации

Validator.js не предоставляет полноценные схемы:

{
  email: string,
  password: string
}

Каждое поле обычно проверяется отдельно.


Типичные сценарии применения

Авторизация и регистрация

Проверка:

  • email;
  • пароля;
  • телефона;
  • логина.

REST API

Валидация:

  • query-параметров;
  • body-запросов;
  • headers;
  • route params.

Очистка пользовательского ввода

Защита от:

  • XSS;
  • некорректных символов;
  • невалидных данных;
  • мусорных строк.

Проверка финансовых данных

Поддерживаются:

  • банковские карты;
  • IBAN;
  • SWIFT/BIC.

Структура типичного процесса валидации

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

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

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

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

Проверка надёжности пароля

Метод isStrongPassword()

validator.isStrongPassword('MyPassword123!');

Настройки сложности

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

Локализация

Некоторые методы поддерживают локали.

Примеры:

validator.isAlpha('Привет', 'ru-RU');
validator.isMobilePhone(
  '+77001234567',
  'kk-KZ'
);

Это позволяет учитывать региональные особенности форматов и алфавитов.


Практика безопасной валидации

Никогда не доверять пользовательскому вводу

Даже если данные приходят:

  • из формы;
  • из API;
  • из мобильного приложения;
  • из внутренней системы.

Комбинация валидации и санитарной обработки

Часто используется последовательность:

const email = validator.trim(req.body.email);

if (!validator.isEmail(email)) {
  throw new Error('Invalid email');
}

Validator.js как часть backend-архитектуры

Библиотека часто используется совместно с:

  • Express middleware;
  • ORM;
  • JWT-аутентификацией;
  • API Gateway;
  • GraphQL;
  • микросервисами.

Validator.js обычно отвечает за первичную проверку корректности данных до основной бизнес-логики.