Regex
Дата оновлення перекладу 2024-05-29
Regex
Валідує, що значення співпадає з регулярним виразом.
?????????????? ?? | ??????????? ??? ?????? |
???? | Regex |
????????? | RegexValidator |
Базове застосування
Уявіть, що у вас є поле description
і ви хочете верифікувати, що воно починається
з валідного символлу. Регулярний вираз для тестування цього буде /^\w+/
, що означає,
що ви шукаєте хоча б один або більше символів на початку вашого рядку:
1 2 3 4 5 6 7 8 9 10
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\Regex('/^\w+/')]
protected string $description;
}
Як варіант, ви можете встановити опцію match як false
, щоб вимагати, щоби
заданий рядок не співпадав. У наступному прикладі ви будете вимагати, щоб поле
firstName
не містило цифр та дасте йому користувацьке повідомлення:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\Regex(
pattern: '/\d/',
match: false,
message: 'Your name cannot contain a number',
)]
protected string $firstName;
}
Дата оновлення перекладу 2022-12-20
Note
Як і в більшості інших обмежень, null
та порожні рядки вважаються валідними
значеннями. Це для того, щоб дозволити їм бути опціональними значеннями. Якщо
значення є обовʼязковим, розповсюдженим рішенням буде комбінація цього обмеження
з NotBlank.
Опції
Дата оновлення перекладу 2023-09-24
groups
тип: array
| string
за замовчуванням: null
Визначає групу або групи валідації обмеження. Прочитайте більше про групи валідації.
htmlPattern
тип: string|boolean
за замовчуванням: null
Ця опція вказує схему для використання в атрибуті HTML5 pattern
. Ви зазвичай
не повинні вказувати цю опцію, так як за замовчуванням, обмеження буде конвертувати
задану схему в опцію pattern, сумісну зі схемою HTML5. Це означає, що розмежувачі
видаляються (наприклад, /[a-z]+/
стає [a-z]+
).
Однак існують деякі інші неумісності між двома схемами, які не можуть бути виправлені
обмеженням. Наприклад, атрибут HTML5 pattern
не підтримує відмітки. Якщо у вас є
схема на кшталт /[a-z]+/i
, то вам потрібно вказати схему, сумісну з HTML5 в опції
htmlPattern
:
1 2 3 4 5 6 7 8 9 10 11 12 13
// src/Entity/Author.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
#[Assert\Regex(
pattern: '/^[a-z]+$/i',
htmlPattern: '^[a-zA-Z]+$'
)]
protected string $name;
}
Встановивши htmlPattern
як false
, ви віключите валідацію клієнтської сторони.
match
тип: boolean
за замовчуванням: true
Якщо true
(або не встановлена), цей валідатор передасть співпадіння заданого рядку у
заданий регулярний вираз pattern. Однак коли ця опція встановлена як false
, то станеться
навпаки: валідація пройде лише у випадку, якщо заданий рядок не співпадає з регулярним
виразом pattern.
message
тип: string
за замовчуванням: Это значение не валидно.
Відображуване повідомлення, якщо валідатор зазнає невдачі.
Ви можете використати наступні параметри у цьому повідомленні:
???????? | ???? |
---|---|
{{ value }} |
??????? (?????????) ???????? |
{{ label }} |
??????????? ????? ???? ????? |
{{ pattern }} |
?????????? ??????, ?? ????????? |
pattern
тип: string
[опція за замовчуванням ]
Ця обовʼязкова опція є схемою регулярного виразу, з якою буде співставлено введення. За замовчуванням, цей валідатор буде неуспішним, якщо рядок введення не співпадає з цим регулярним виразом (через PHP-функцію preg_match). Однак, якщо match встановлена як "false", то валідатор зазнає невдачі, якщо рядок співпадає з цією схемою.
Дата оновлення перекладу 2022-12-20
normalizer
тип: PHP-викличне за замовчуванням: null
Ця опція дозволяє вам визначати PHP-викличне, застосоване до заданого значення до перевірки, чи є воно валідним.
Наприклад, ви можете захотіти передати рядок 'trim'
для застосування
PHP-функції trim, щоб ігнорувати початкові та замикаючі пробіли
під час валідації.
Дата оновлення перекладу 2024-05-29
payload
тип: mixed
за замовчуванням: null
Ця опція може бути використана, щоб додати довільні дані, специфічні для домену, до обмеження. Сконфігуроване корисне навантаження не використовується компонентом Validator, але його обробка повністю залежить від вас.
Наприклад, ви можете захотіти використати декілька рівнів помилок, щоб представити неуспішні обмеження по-різному у фронтенді, залежно від серйозності помилки.