我有一个电子邮件地址列表,我想检查它们是否是GMail的有效电子邮件地址。在
可能的电子邮件地址
"admin@gmail.com"
"john.smith@googlemail.com"
"john5.a.smith@gmail.com"
"jane_doe@googlemail.com"
"patrick.o'reilly@gmail.com"
但是以下地址不是有效的电子邮件地址
^{pr2}$这是一个以a-z或0-9开头的字符串,后面是零个或更多的特殊字符。在
re.search("^[a-z0-9]+[\.'\-]*[a-z0-9]+@(gmail|googlemail)\.com$", s)
但它失败了
"john5.a.smith@gmail.com"
这是一件棘手的事情,很难或不可能正确地处理正则表达式,因为它很快就会失控。在设计过滤器时,你必须权衡对误报和漏报的关注,并根据自己的喜好做出任何决定。认为这种过滤器能100%工作是不正确的。
根据您的要求,您应该决定:
同样,这取决于您的需求,但我建议不要过滤。即使在电子邮件声誉受到关注的情况下,除非你发送的电子邮件地址是好的和坏的,否则这是更好的选择。在
证明这一事实的几点
与你发布的不同:
admin@gmail.com
是非法地址postmaster.@gmail.com
将接收邮件。在这表明,要把这类事情做好是非常困难的。我认为你不应该这么做。即使是“简单”和“显而易见”的事情,在电子邮件®这个古怪的世界里也不例外。
需要注意的是dots don't matter in gmail addresses。在
对我的个人电子邮件的快速测试证实 前导点或尾随点遵循这一原则:
工作,并被交付。
您必须区分有效的Gmail用户名和有效的Gmail地址。它们不是一回事。 仅仅因为您不能为用户名注册特定的字符串并不意味着将同一个字符串放在
@gmail.com
前面不会发送电子邮件。在其他几点:
admin@gmail.com
实际上是一个非法地址。bob@gmail.com
等也属于非法,尽管“明显合法”。在homerjsimpson+stackoverflow@gmail.com
将很高兴地交付给{改用这个:
在Regex101.com上测试:
相关问题 更多 >
编程相关推荐