在Symfony2中,是否有一种内置的方法来验证字符串(在我的情况下是用户名和另一个属性)是否符合经典的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。