我遇到了以下电子邮件aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanom@domaine.com
根据使用@Assert\Email
email
属性的Doctrine 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
答案 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}))\]))$
所以你要做的就是。
简而言之,电子邮件地址的本地部分太长了 我不确定正则表达式的哪一部分决定了这一点。