2017-07-26 132 views
1

我想验证用户数据,我有一个领域的预算,我希望接受这种格式ddd.ddd场,DDD EXP:235.123,125验证使用正则表达式

我怎么可以指定此与正则表达式的格式,我使用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; 
+0

你可以试试这个:(\ d {3}。\ d {3},\ d {3})。问候 – Albeis

+0

这将无法正常工作@Albeis,你没有逃脱期间 –

+0

哪一段?问候@JasonRoman – Albeis

回答

0

使用以下修正:

* @Assert\Regex(
*  pattern="/^\d{3}\.\d{3},\d{3}$/", 
*  match=true, 
*  message="Budget Invalid" 

你的模式应该比赛您指定的格式,因此,match必须设置为,或移除真正是默认值。

如果true(或不设置),这个验证会如果给定串中的给定的pattern正则表达式匹配通过。但是,如果此选项设置为false,则会发生相反情况:只有给定字符串确实会通过验证而不是pattern正则表达式匹配。

图案可以收缩位TOT ^\d{3}\.\d{3},\d{3}$:串,3位数字,.,3位数字,,然后3在字符串的末尾数字的开始。

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

+0

我已经尝试过它的工作,但我现在的问题是:我有一个表单组成的2个选项卡,预算是在第二个选项卡上,并验证第一个选项卡所以我认为我应该javascript而不是在注释中验证 – Julie

+0

@Julie这听起来像是一个不同的问题,不是吗?无论如何,在JS中,你只需要用'/^\ d {3} \。\ d {3},\ d {3} $ /。test(your_string)'来测试这个值。 –