Библиотека 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
Метод 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
Метод isURL() используется для проверки
интернет-адресов.
validator.isURL('https://google.com');
Результат:
true
Некорректный URL:
validator.isURL('google');
Результат:
false
Проверка только 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
Метод isJSON() проверяет строку JSON.
validator.isJSON('{"name":"Alex"}');
Результат:
true
Ошибочный JSON:
validator.isJSON('{name:"Alex"}');
Результат:
false
UUID часто используется в базах данных и API.
validator.isUUID('550e8400-e29b-41d4-a716-446655440000');
Результат:
true
Некорректный UUID:
validator.isUUID('12345');
Результат:
false
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'
Метод escape() защищает от HTML-инъекций.
validator.escape('<script>alert("xss")</script>');
Результат:
'<script>alert("xss")</script>'
validator.blacklist('hello@world.com', '@.');
Результат:
'helloworldcom'
validator.isMobilePhone('+77001234567', 'kk-KZ');
Результат:
true
Некорректный номер:
validator.isMobilePhone('12345', 'kk-KZ');
Результат:
false
validator.isIP('192.168.0.1');
Результат:
true
IPv6:
validator.isIP('2001:0db8:85a3:0000:0000:8a2e:0370:7334', 6);
validator.isCreditCard('4111111111111111');
Результат:
true
Пример проверки входящего запроса:
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: {}
}