是否有一个好方法来检查表单输入使用正则表达式,以确保它是一个正确的风格的电子邮件地址?从昨晚开始搜索,每个人都回答了关于这个话题的问题,如果它是一个子域名的电子邮件地址,似乎也有问题。
当前回答
如果你想从一个长字符串或文件中取出邮件,那么试试这个。
([^@|\s]+@[^@]+\.[^@|\s]+)
注意,当你的电子邮件地址前后都有空格时,这是有效的。如果你没有空间或有一些特殊的字符,那么你可以尝试修改它。
工作的例子:
string="Hello ABCD, here is my mail id example@me.com "
res = re.search("([^@|\s]+@[^@]+\.[^@|\s]+)",string,re.I)
res.group(1)
这将从该字符串中删除example@me.com。
另外,注意这可能不是正确答案……但我把它贴在这里是为了帮助像我这样有特殊要求的人
其他回答
我在这里看到了很多复杂的答案。他们中的一些人,不知道简单,真实的电子邮件地址,或有假阳性。下面是测试字符串是否为有效电子邮件的最简单方法。它测试2和3个字母的TLD。现在技术上你可以有更大的,你可能希望增加3到4,5甚至10。
import re
def valid_email(email):
return bool(re.search(r"^[\w\.\+\-]+\@[\w]+\.[a-z]{2,3}$", email))
这通常是使用正则表达式解决的。然而,有许多不同的解决方案。这取决于您需要的严格程度,以及您是否有自定义的验证要求,或者是否接受任何有效的电子邮件地址。
参考页面:http://www.regular-expressions.info/email.html
from validate_email import validate_email
is_valid = validate_email('example@example.com',verify=True)
print(bool(is_valid))
参见validate_email文档。
电子邮件地址并不像看上去那么简单!例如,Bob_O'Reilly+tag@example.com是一个有效的电子邮件地址。
我在lepl包(http://www.acooke.org/lepl/)上有一些运气。它可以验证RFC 3696中指出的电子邮件地址:http://www.faqs.org/rfcs/rfc3696.html
找到一些旧代码:
import lepl.apps.rfc3696
email_validator = lepl.apps.rfc3696.Email()
if not email_validator("email@example.com"):
print "Invalid email"
import re
def email():
email = raw_input("enter the mail address::")
match = re.search(r'[\w.-]+@[\w.-]+.\w+', email)
if match:
print "valid email :::", match.group()
else:
print "not valid:::"
email()
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录