Regex 使用正则表达式验证字段
我想验证用户数据,我有一个字段预算,我想给这个格式一个ddd.ddd,dddexp:235.123125 我如何用regex指定这种格式,我使用的是symfony,这是我尝试过的,当我给出不同的格式时,什么也没有发生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
/**
* @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(您的字符串)
来测试值。