2017-07-26 74 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)'來測試這個值。 –