python正则表达式 [^@]+@[^@]+\.[^@]+ 如何检查邮箱?

0 投票
3 回答
763 浏览
提问于 2025-04-18 03:04

(来自 Python 检查有效的电子邮件地址?)

我不太明白这个内容

[^@]+@[^@]+\.[^@]+

有人能详细解释一下吗?

3 个回答

0

要正确验证一个符合RFC822地址规范(第27页的“6. 地址规范”部分)的地址,其实比简单的正则表达式要复杂一些。

为了做到这一点,最好是用一种语法规则(就像RFC中描述的那样),不过用正则表达式也可以。你可以在Email::Valid模块中找到这样的正则表达式,具体来说就是在这里。我还没有在Python中试过这个正则表达式(但在Perl中运行得很好)。

据我所知,这就是检查一个电子邮件地址是否符合RFC822标准的实际方法。你也可以查看这个SO帖子,了解更多细节。

现在来回答你的问题,这个正则表达式[^@]+@[^@]+\.[^@]+的意思是“至少有一个或多个不是@的字符,然后是一个@,接着是至少一个或多个不是@的字符,然后是一个点,最后是至少一个或多个不是@的字符”。

0

[^@]+ - 这个表达式用来检查一个字符串中有没有不是@符号的字符,而且这个字符可以出现一次或多次。

@ - 这个表达式就是直接查找@符号。

\. - 这个表达式用来查找.这个字符(因为.在其他情况下会代表任何字符,所以这里需要加一个反斜杠来“转义”它)。

所以,整体来看,它是在寻找一个字符串,这个字符串中不包含@,然后是@,接着又是一个不包含@的字符串,后面跟着.,最后又是一个不包含@的字符串。

2

这个规则是用来检查一个字符串的格式的。它要求字符串里有一个或多个不是@的字符,接着是一个@,然后又是一个或多个不是@的字符,再接着是一个.,最后是一个或多个不是@的字符。

[]表示一个字符类,而^则是用来表示这个字符类的反面。+表示前面的字符要出现一次或多次。最后,.需要用\.来转义,因为.是一个特殊符号,表示“任何字符”。

这意味着这种方法并不是检查电子邮件的最佳方式,因为还有很多其他的限制。例如,这种方式会允许一个长度达到10,000个字符的电子邮件,或者像!@#.com这样的域名。

建议你使用像Regex101这样的工具来测试表达式,并获取详细的说明。

撰写回答