5

symfony2 中是否有内置方法可以根据经典的 az、AZ 和 0-9 规则验证字符串(在我的情况下是用户名和另一个属性)?

作为自定义验证器,我是否必须自己在正则表达式中编写它?(如果是这样,请提示在哪里看)

4

2 回答 2

10

您应该使用本机Regex 验证器

就像使用 Regex 断言注释一样简单,如下所示,

use Symfony\Component\Validator\Constraints as Assert;

class YourClass
{
   /**
    * @Assert\Regex("/[a-zA-Z0-9]/")
    */        
    protected $yourProperty;
}

match您还可以通过将选项设置为来自定义验证,false以断言给定的字符串不匹配。

/**
 * @Assert\Regex(
 *     pattern="/[a-zA-Z0-9]/",
 *     match=false,
 *     message="Your property should match ..."
 * )
 */
protected $yourProperty;

使用注解不是唯一的方法,你还可以使用YML、XML 和 PHP,查看文档,里面有很多解释清楚的例子来解决这个问题。

于 2013-10-31T10:15:12.207 回答
3

我无法让之前的答案正常工作。我认为它缺少重复量词 ( +)。即使那样,如果违规字符位于字符串的开头或结尾,它也会匹配子字符串,因此我们需要开始^和结束$限制。我还需要允许破折号和下划线以及字母和数字,所以我的最终模式看起来像这样。

 * @Assert\Regex("/^[a-zA-Z0-9\-\_]+$/")

我使用的是 Symfony 2.8,所以我不知道 Regex 验证是否发生了变化,但似乎不太可能。

用于测试正则表达式模式的一个很好的资源是regex101.com

于 2015-12-04T15:42:31.600 回答