如何用 Python 编写一个简单的电子邮件验证程序? [复制]
Posted
技术标签:
【中文标题】如何用 Python 编写一个简单的电子邮件验证程序? [复制]【英文标题】:How can I write a simple email validation program in Python? [duplicate] 【发布时间】:2015-01-28 05:14:21 【问题描述】:这似乎是一个愚蠢的问题,但是我怎样才能用 Python 编写一个简单的电子邮件验证程序呢?我对软件很陌生,错过了几节 IT 课程,所以我真的不知道该怎么办。
这是据我所知(是的,我知道它没有任何用处):
email = input ("Please type in an email address ")
splitemail = email.split('@')
emailstr = ''.join(splitemail)
splitemail2 = emailstr.split('.')
print (splitemail2)
电子邮件需要具有以下模式:[alphanumeric character(s)] @ [alphanumeric character(s)] 。 [字母数字字符]
然后程序必须判断is是否有效并输出'VALID'或'INVALID'。
感谢您的阅读,我们将不胜感激。
【问题讨论】:
你知道正则表达式吗?在这种情况下应该会有所帮助 不,我想我在尝试研究这个问题时看到了提到的那些,但我以前没有使用过。 尝试先写一些伪代码 查看docs.python.org/2/library/re.html 抱歉 - 在发布问题之前,我对正则表达式一无所知。 【参考方案1】:我会使用一些正则表达式来验证和拆分给定的电子邮件地址。 然后代码将如下所示
import re
email = input ("Please type in an email address ")
if re.match("\A(?P<name>[\w\-_]+)@(?P<domain>[\w\-_]+).(?P<toplevel>[\w]+)\Z",email,re.IGNORECASE):
print("Email is valid")
else:
print("Email is invalid")
有关正则表达式的信息,请查看here。这里link 可以轻松测试您的表情。
【讨论】:
谢谢 - 这与我目前所介绍的有点不同,但它似乎工作得很好! 域名标签中不允许使用下划线。这也会拒绝许多有效地址。 你说得对,我给出的正则表达式并未验证所有可能的电子邮件地址。如果有人真的想知道如何为大多数/所有电子邮件地址获取正则表达式,请看这里:regular-expressions.info/email.html【参考方案2】:您可以使用string.isalum()
函数来解决这个问题。
示例:
def validate(mystring):
if mystring.isalnum():
print "VALID"
else:
print "INVALID"
这是一个进出的例子:
IN mystring = "alphanum1234"
OUT VALID
IN mystring = "alpha num 1234"
OUT INVALID
IN mystring = "alpha.num-1234"
OUT INVALID
【讨论】:
本文第一行有错字,应该是 string.isalnum() 而不是 .isalum()【参考方案3】:阅读正则表达式,它们应该可以帮助您:) 一个有用的验证电子邮件的正则表达式是:
[A-Za-z0-9-_]+(.[A-Za-z0-9-_]+)*@[A-Za-z0-9-]+(.[A-Za-z0-9]+)*(.[A-Za-z]2,)
可以在here找到对此的解释
这里有一些很好的正则表达式教程:
http://fr.slideshare.net/absherzad/java-regular-expression-part-i
http://fr.slideshare.net/absherzad/java-regular-expression-part-ii
这是一个关于 SE 的question,关于使用正则表达式在 python 中验证电子邮件
【讨论】:
感谢您的回答——这些对我真的很有帮助。 但不要在现实生活中使用它,因为它会拒绝许多有效地址。 @tripleee 不匹配的电子邮件示例?ick..bar@example.com
; moo+boo!far%quux*bar~zoo@example.net
以上是关于如何用 Python 编写一个简单的电子邮件验证程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章