什么是Symfony 2的@Assert \有效电子邮件的电子邮件验证标准?

时间:2014-10-24 15:59:37

标签: validation email symfony

我遇到了以下电子邮件aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanom@domaine.com根据使用@Assert\Email email属性的Doctrine Entity上的断言无效的问题。

我没有看到任何详细说明检查通过或验证失败的文档。

很想知道代码的位置或者我可以在哪里找到关于这个断言正在做什么的更多文档......

更新,我对该Entity属性的整个断言是:

/**
     * @ORM\Column(type="string", length=511)
     * @Filter\Trim()
     * @Filter\StripNewlines()
     * @Assert\NotBlank(message="email.error")
     * @Assert\Email(message="email.error")
     * @Assert\Length(min="6", max="150", minMessage="email.error", maxMessage="email.error")
     * @Encrypted
     */
    private $email;

使用Symfony 2.3

2 个答案:

答案 0 :(得分:1)

我相信Symfony\Component\Validator\Constraints\EmailValidator课程正是你要找的。查看source code

答案 1 :(得分:0)

Symfony 2.3 Email validator使用PHP var过滤方法

$valid = filter_var($value, FILTER_VALIDATE_EMAIL);

internet引导他们相信使用类似于以下(荒谬)正则表达式(为便于阅读而分为多行)

^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?
\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\
x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\
x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\
x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:
\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]
+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[
(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(
?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)
))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(
?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?
)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])
|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$

所以你要做的就是。

简而言之,电子邮件地址的本地部分太长了 我不确定正则表达式的哪一部分决定了这一点。