【问题标题】:Symfony2.0 validation with RegexSymfony2.0 使用正则表达式验证
【发布时间】:2012-09-05 16:42:35
【问题描述】:

我正在处理一个带有文本字段的 Symfony2.0 表单。我使用 Annotation 来验证该字段。该字段具有以下验证:

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

请注意,Regex 断言来自 here

所以,我希望除了数字之外的所有字符都可以使用!但是,当我输入一些特殊字符(如“ò”)时,表单未通过验证,并返回错误消息“此文本不能包含数字”。

我检查了http://www.regextester.com/ 的正则表达式字符串,似乎工作正常!

知道为什么 Symfony2.0 中的验证效果不好吗? 我错过了什么吗?

【问题讨论】:

    标签: regex symfony annotations validation


    【解决方案1】:

    我将Symfony2.0官方文档中提出的Regex修改如下:

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

    现在表单运行良好。

    最后的想法!我真的不明白为什么使用 Regex \d 来表示这些字符是数字。许多非英语单词都使用该字符。

    【讨论】: