2012-09-05 163 views
2

我正在編寫一個帶有文本字段的Symfony2.0表單。我使用註釋來驗證該字段。該字段具有以下驗證:使用正則表達式Symfony2.0驗證

* @Assert\MinLength(limit=2, message="At least two characters") 
* @Assert\NotBlank() 
* @Assert\Regex(
*   pattern= "/\d/", 
*   match= false, 
*   message= "This text cannot contain numbers" 
*) 

注意,正則表達式斷言來自here

所以,我希望除了數字以外的所有字符都可以使用!但是,如果放入「」,「」等特殊字符,表單將不會生效,並返回錯誤消息「此文本不能包含數字」。

我檢查了正則表達式字符串http://www.regextester.com/似乎正常工作!

任何想法爲什麼在Symfony2.0中的驗證工作不好? 我錯過了什麼嗎?

回答

2

我改變了正則表達式Symfony2.0官方文檔建議如下:

@Assert\Regex(pattern= "/[0-9]/") 

現在的形式效果很好。

最後的想法!我真的不明白爲什麼這些字符是通過使用Regex \ d而成爲數字。許多非英語單詞使用該字符。

+3

您應該使用Type約束:http://symfony.com/fr/doc/current/reference/constraints/Type.html –