symfony2 实体验证正则表达式 a-z A-Z 0-9


symfony2 entity validation regexp a-z A-Z 0-9

symfony2中是否有一种内置方法来验证字符串(在我的例子中是用户名和另一个属性)与经典的a-z,A-Z和0-9规则?

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

你应该使用原生正则表达式验证器,

就像使用正则表达式断言注释一样简单,如下所示,

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,检查文档,其中充满了解决此问题的解释良好的示例。

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

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

我正在使用Symfony 2.8,所以我不知道正则表达式验证是否发生了变化,但这似乎不太可能。

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

相关文章:
  • 没有找到相关文章