Regex
Дата обновления перевода 2024-07-25
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;
}
Note
As with most of the other constraints, null
and empty strings are
considered valid values. This is to allow them to be optional values.
If the value is mandatory, a common solution is to combine this constraint
with NotBlank.
Опции
groups
type: array
| string
default: null
It defines the validation group or groups of this constraint. Read more about validation groups.
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", то валидатор потерпит неудачу, если строка совпадает с этой схемой.
normalizer
type: a PHP callable default: null
This option allows to define the PHP callable applied to the given value before checking if it is valid.
For example, you may want to pass the 'trim'
string to apply the
trim PHP function in order to ignore leading and trailing
whitespace during validation.
Дата обновления перевода 2024-07-25
payload
тип: mixed
по умолчанию: null
Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.
Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.