Regex
Дата обновления перевода 2025-02-05
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;
}
Дата обновления перевода 2025-02-21
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", то валидатор потерпит неудачу, если строка совпадает с этой схемой.
Дата обновления перевода 2025-02-21
normalizer
тип: PHP-вызываемое по умолчанию: null
Эта опция позволяет вам определять PHP-вызываемое, примененное к заданному значению до проверки, является ли оно валидным.
Например, вы можете захотеть передать строку 'trim'
для применения
PHP-функции trim, чтобы игнорировать начальные и замыкающие пробелы
во время валидации.
Дата обновления перевода 2025-02-05
payload
тип: mixed
по умолчанию: null
Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.
Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.