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

Эта опция может быть использована, чтобы добавить к ограничению произвольные данные, относящиеся к домену. Сконфигурированная нагрузка не используется компонентом Валидатор, но его обработка полностью зависит от вас.

Например, вы можете захотеть исользовать несколько уровней ошибок, чтобы представить неудачные ограничения в фронт-энде по-разному, в зависимости от степени сложности ошибки.