我正在尝试创建一个程序来检查电子邮件的验证,看它是否以小写字母开头,包含“@”符号,以及“.com”或“.co.uk”。我该怎么做呢。
我的网络很有趣,因此我无法在线查看表达式。
这是我到目前为止所做的:
def valid_email():
email_address = input("Enter your email: ")
valid = re.match("[a-z]",email_address)
if valid:
print("That looks OK")
else:
print("Invalid, must be lowercase and contain an '@' sign")
valid_email()
valid_email()
答案 0 :(得分:-1)
您可以编写valid = re.match(r"[a-z0-9]+@[a-z]+\.(com|co.uk)",email_address)
这将检查您的电子邮件是否遵循您提到的模式。
对于进一步的验证,例如以小写字母开头,包含“@”符号,以及“.com”或“.co.uk”,您可以设置类似
的条件 if '@' not in email_address:
print "Must contain @"
同样,你可以提出各种条件。
答案 1 :(得分:-1)
话虽如此,你的代码就是搜索 a-z 之间的任何字符并停止。 也就是说,如果地址是 blah@foo.co.uk ,那么你的正则表达式就会启动,看看那里有一个''在开头与[a-z]匹配并将停止。
而是使用'[a-z]+'
这将继续搜索,直到达到.
为止
@
符号是必需的,因此应按原样放置。
现在正则表达式变为'[a-z]+@'
现在关于域的验证,请使用:'[\w.]+[a-z]+'
因此,您的最终正则表达式(根据您的要求)变为:
re.match(r'[a-z]+@[\w.]+[a-z]+')
但上面是非常弱的正则表达式,并且不会考虑可能在用户名字段中出现的_
或.
。我强烈建议您使用已经可用于电子邮件验证的正则表达式,而不是尝试制作自己的正则表达式。
以下是完整电子邮件验证的正则表达式(对于python):
r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
(来自http://emailregex.com/)
这里是General Email Regex:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
答案 2 :(得分:-2)
您的正则表达式包含以下语句:
所以你的正则表达式应该是这样的:
valid = re.match(r"[a-z]+[^@]+?\.[^@]+", email_address)