如何检查字符串是否是电子邮件?

时间:2013-03-22 19:03:38

标签: python regex email

我目前使用以下代码:

regexp = re.compile(r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}', re.IGNORECASE)
email = regexp.findall(stext)
if email:
    email = email[0]

但即使stext包含其他文本以及电子邮件(例如some text email@example.com some other text),它也会有用。当我想检查stext是否仅包含email@example.com 时(好吧,可能包含前导或/和尾随空格,没有其他字符)。

PS。我也认为可能我应该使用mail.is_email_valid代替正则表达式,will allow我支持.museam等长域或.рф等本地域。

3 个答案:

答案 0 :(得分:3)

你需要在开头添加^,这意味着“文字从这里开始”,最后是$,“此后不再有文字”。

这会给:

r'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$'

答案 1 :(得分:1)

使用此正则表达式:

\s?[A-Z0-9_-+%]+@[A-Z0-9_-+%]+\.[A-Z0-9]\s?

答案 2 :(得分:0)

为什么不在电子邮件之前和之后使用\ b作为字边界?