我目前使用以下代码:
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
等长域或.рф
等本地域。
答案 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作为字边界?