You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 5 原有正常运行的Regex Validator正则验证器突然失效问题

问题根因

你调用验证器时指定了仅执行registration分组的验证规则,但@Assert\Regex注解没有配置对应的分组,因此属于默认分组的Regex规则不会被触发,仅配置了分组的@Assert\NotBlank能正常执行。

解决方案

给所有需要在注册场景生效的Regex注解补充groups参数即可,修改后的Entity代码示例如下:

/**
 * @var string
 *
 * @ORM\Column(name="firstname", type="string", length=30, nullable=false, options={"comment"="input#text&[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}@Prénom"})
 * @Assert\NotBlank (
 *     message="Le champs [prénom] ne peut être vide",
 *     groups={"registration"}
 * )
 * @Assert\Regex (
 *     pattern="/^[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}$/",
 *     message="Champs prénom : La saisie est invalide (min: 2, max: 30)",
 *     groups={"registration"}
 * )
 */
private $firstname;

/**
 * @var string
 *
 * @ORM\Column(name="lastname", type="string", length=30, nullable=false, options={"comment"="input#text&[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}@Nom"})
 * @Assert\NotBlank (
 *     message="Le champs [nom] ne peut être vide",
 *     groups={"registration"}
 * )
 * @Assert\Regex (
 *     pattern="/^[A-Za-z \-\'àâäçéèêëîïôöùûüÿæœÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒ]{2,30}$/",
 *     message="Champs nom : La saisie est invalide (min: 2, max: 30)",
 *     groups={"registration"}
 * )
 */
private $lastname;

其他排查方向(如果修改后仍不生效)

  • 检查实体对应字段的setter方法,确认没有自动修剪输入、转义特殊字符的逻辑,避免你传入的测试内容被修改后刚好匹配正则规则
  • 手动执行preg_match测试正则和输入内容的匹配结果,排除正则本身写法问题
  • 如果使用Symfony 6及以上版本,建议将注解改为PHP原生属性写法,避免doctrine/annotations依赖异常导致的注解加载问题

内容的提问来源于stack exchange,提问作者Haamome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:54:03