0

我目前使用以下代码:

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而不是正则表达式,它将允许我支持长域,.museam.рф.

4

3 回答 3

3

您需要在开头添加 ^ ,表示“文本从这里开始”,最后添加 $ ,表示“此处不再有文本”。

那将给出:

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

于 2013-03-22T19:06:21.353 回答
1

使用这个正则表达式:

\s?[A-Z0-9_-+%]+@[A-Z0-9_-+%]+\.[A-Z0-9]\s?
于 2013-03-22T19:20:23.487 回答
0

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

于 2013-03-22T20:05:22.583 回答