Validator.js — популярная библиотека для проверки и очистки строковых данных в JavaScript. Используется как в браузере, так и в серверных приложениях на Node.js. Основная задача библиотеки — обеспечить надёжную валидацию пользовательского ввода: email-адресов, URL, UUID, IP-адресов, дат, номеров банковских карт, JSON-строк и множества других типов данных.
Validator.js особенно востребован в:
npm install validator
yarn add validator
const validator = require('validator');
import validator from 'validator';
Validator.js работает преимущественно со строками.
Большинство методов:
true или false;Пример:
import validator from 'validator';
const result = validator.isEmail('admin@example.com');
console.log(result); // true
Один из наиболее используемых методов библиотеки.
validator.isEmail('user@mail.com');
Результат:
true
validator.isEmail('invalid-email');
Результат:
false
Метод поддерживает множество опций.
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-адреса.
validator.isURL('https://google.com');
Результат:
true
validator.isURL('not-url');
Результат:
false
validator.isURL('http://localhost:3000', {
protocols: ['http', 'https'],
require_protocol: true,
require_host: true
});
UUID широко используется для идентификаторов.
validator.isUUID('550e8400-e29b-41d4-a716-446655440000');
validator.isUUID(
'550e8400-e29b-41d4-a716-446655440000',
4
);
12345allvalidator.isJSON('{"name":"Alex"}');
validator.isJSON('{name: Alex}');
Результат:
false
validator.isIP('192.168.1.1');
validator.isIP('192.168.1.1', 4);
validator.isIP('2001:db8::ff00:42:8329', 6);
Validator.js поддерживает большое количество локалей.
validator.isMobilePhone('+77001234567', 'kk-KZ');
validator.isMobilePhone(
'+77001234567',
['kk-KZ', 'ru-RU']
);
validator.isDate('2025-01-01');
validator.isDate('01.05.2025', {
format: 'DD.MM.YYYY',
strictMode: true
});
При включении строгого режима библиотека:
validator.isNumeric('12345');
validator.isNumeric('-100', {
no_symbols: false
});
validator.isInt('100');
validator.isInt('25', {
min: 18,
max: 65
});
validator.isFloat('10.55');
validator.isFloat('99.9', {
min: 0,
max: 100
});
validator.isLength('password123', {
min: 8,
max: 20
});
validator.isEmpty('');
validator.isEmpty(' ', {
ignore_whitespace: true
});
validator.isAlpha('Hello');
validator.isAlpha('Привет', 'ru-RU');
validator.isAlphanumeric('User123');
validator.isCreditCard('4111111111111111');
validator.isHash(
'5d41402abc4b2a76b9719d911017c592',
'md5'
);
validator.isJWT(token);
validator.isMACAddress('00:1B:44:11:3A:B7');
validator.isMimeType('application/json');
validator.isPort('3000');
validator.isISBN('9785179467425');
validator.isIBAN('DE89370400440532013000');
validator.isBIC('DEUTDEFF');
validator.isHexadecimal('FFAA00');
validator.isHexColor('#3498db');
validator.isSlug('my-awesome-article');
validator.isBase64('SGVsbG8=');
Validator.js содержит не только валидаторы, но и инструменты очистки данных.
Удаляет пробелы по краям строки.
validator.trim(' hello ');
Результат:
'hello'
Экранирует HTML-символы.
validator.escape('<script>alert("xss")</script>');
Результат:
'<script>alert("xss")</script>'
Метод используется для защиты от XSS-атак.
Удаляет непечатные символы.
validator.stripLow('hello\u0000world');
Удаляет запрещённые символы.
validator.blacklist('hello123', '123');
Результат:
'hello'
Оставляет только разрешённые символы.
validator.whitelist('abc123', 'a-z');
Результат:
'abc'
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.isEmail(null);
Корректно:
validator.isEmail(String(value));
function safeEmailCheck(value) {
if (typeof value !== 'string') {
return false;
}
return validator.isEmail(value);
}
Библиотека содержит десятки готовых методов:
Большинство методов имеют одинаковый стиль использования:
validator.method(value, options);
Validator.js можно использовать:
Многие методы поддерживают:
Validator.js плохо подходит для:
Для подобных задач чаще используются:
Validator.js не предоставляет полноценные схемы:
{
email: string,
password: string
}
Каждое поле обычно проверяется отдельно.
Проверка:
Валидация:
Защита от:
Поддерживаются:
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
};
}
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'
);
Это позволяет учитывать региональные особенности форматов и алфавитов.
Даже если данные приходят:
Часто используется последовательность:
const email = validator.trim(req.body.email);
if (!validator.isEmail(email)) {
throw new Error('Invalid email');
}
Библиотека часто используется совместно с:
Validator.js обычно отвечает за первичную проверку корректности данных до основной бизнес-логики.