Regex 使用正则表达式验证字段

Regex 使用正则表达式验证字段,regex,symfony,validation,annotations,doctrine,Regex,Symfony,Validation,Annotations,Doctrine,我想验证用户数据,我有一个字段预算,我想给这个格式一个ddd.ddd,dddexp:235.123125 我如何用regex指定这种格式,我使用的是symfony,这是我尝试过的,当我给出不同的格式时,什么也没有发生 /** * @var float * * @ORM\Column(name="budget", type="float",nullable=true) * * * @Assert\Regex( * pattern="/^\d\d\d[.]\d\d\d[,]\d

我想验证用户数据,我有一个字段预算,我想给这个格式一个ddd.ddd,dddexp:235.123125

我如何用regex指定这种格式,我使用的是symfony,这是我尝试过的,当我给出不同的格式时,什么也没有发生

/**
 * @var float
 *
 * @ORM\Column(name="budget", type="float",nullable=true)
 *
 *
 * @Assert\Regex(
 *     pattern="/^\d\d\d[.]\d\d\d[,]\d\d\d+$/",
 *     match=false,
 *     message="Budget Invalid"
 * )
 */
private $budget;
使用以下修复程序:

* @Assert\Regex(
*     pattern="/^\d{3}\.\d{3},\d{3}$/",
*     match=true,
*     message="Budget Invalid"
您的模式应该与您指定的格式匹配,因此,必须将其设置为true,或者将其删除,因为true是默认值

如果
true
(或未设置),则如果给定字符串与给定正则表达式匹配,则此验证器将通过。但是,当此选项设置为
false
时,将发生相反的情况:仅当给定字符串与正则表达式不匹配时,验证才会通过

模式可以收缩一点到
^\d{3}\.\d{3}、\d{3}$
:字符串开头,3位,
,3位,
,然后是字符串末尾的3位


如果最后一个数字可以超过3位,请使用
\d{3,}
而不是
\d{3}

您可以尝试以下方法:(\d{3}.\d{3}、\d{3})。考虑到这不起作用@Albis,你没有逃过这段时间哪段时间?@jasonroman您的regexI中只有一个尝试过,但我现在的问题是:我有一个由2个选项卡组成的表单,预算在第二个选项卡上,验证在第一个选项卡验证后会触发一个错误,因此我认为我应该使用javascript,而不是在annotation@Julie这听起来是另一个问题,不是吗?无论如何,在JS中,您只需要使用
/^\d{3}\.\d{3}、\d{3}$/.test(您的字符串)
来测试值。