Перейти к основному содержимому

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

Все валидаторы импортируются из reformer/validators.

required

Поле должно иметь непустое значение.

import { required } from '@reformer/core/validators';

required(path.name);
// Ошибка: { code: 'required', message: '...' }

Пустые значения: '', null, undefined, []

email

Корректный формат email.

import { email } from '@reformer/core/validators';

email(path.email);
// Ошибка: { code: 'email', message: '...' }

minLength / maxLength

Ограничения длины строки.

import { minLength, maxLength } from '@reformer/core/validators';

minLength(path.name, 2);
// Ошибка: { code: 'minLength', params: { required: 2, actual: 1 } }

maxLength(path.bio, 500);
// Ошибка: { code: 'maxLength', params: { required: 500, actual: 501 } }

min / max

Ограничения числового значения.

import { min, max } from '@reformer/core/validators';

min(path.age, 18);
// Ошибка: { code: 'min', params: { min: 18, actual: 16 } }

max(path.quantity, 100);
// Ошибка: { code: 'max', params: { max: 100, actual: 150 } }

pattern

Соответствие регулярному выражению.

import { pattern } from '@reformer/core/validators';

// Только буквы
pattern(path.code, /^[A-Z]+$/);
// Ошибка: { code: 'pattern', params: { pattern: '/^[A-Z]+$/' } }

// Кастомный ключ ошибки
pattern(path.code, /^[A-Z]+$/, 'uppercase');
// Ошибка: { code: 'uppercase' }

url

Корректный формат URL.

import { url } from '@reformer/core/validators';

url(path.website);
// Ошибка: { code: 'url', message: '...' }

phone

Корректный формат телефонного номера.

import { phone } from '@reformer/core/validators';

phone(path.phone);
// Ошибка: { code: 'phone', message: '...' }

number

Должно быть валидным числом.

import { number } from '@reformer/core/validators';

number(path.amount);
// Ошибка: { code: 'number', message: '...' }

date

Корректное значение даты.

import { date } from '@reformer/core/validators';

date(path.birthDate);
// Ошибка: { code: 'date', message: '...' }

Комбинирование валидаторов

Применение нескольких валидаторов к одному полю:

validation: (path) => {
required(path.password);
minLength(path.password, 8);
pattern(path.password, /[A-Z]/, 'uppercase');
pattern(path.password, /[0-9]/, 'hasNumber');
};

Все валидаторы выполняются, ошибки собираются:

// Если пароль "abc"
errors: [
{ code: 'minLength', params: { required: 8, actual: 3 } },
{ code: 'uppercase' },
{ code: 'hasNumber' },
];

Следующие шаги