python正则表达式[^ @] + @ [^ @] + \。[^ @] +如何检查电子邮件?

时间:2014-04-17 02:02:18

标签: python regex email

(来自Python check for valid email address?

我不完全理解

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

有人可以详细解释一下吗?

3 个答案:

答案 0 :(得分:1)

它会查找1个非@个字符,然后是@个字符,后跟1个非@字符,后跟.个字符,后跟1个非@个字符。

[]s denote a character class,而^否定了字符类。前面字符的+ matches 1+。最后,.会像\.一样进行转义,因为. is a reserved symbol含义"任何字符"。

这意味着它不是用于检查电子邮件的最佳方法,因为还有很多限制。例如,这将验证10,000个字符长的电子邮件或包含!@#.com等域名的电子邮件。

习惯使用像Regex101这样的工具来测试表达式并获得良好的描述。

答案 1 :(得分:0)

[^@]+ - 检查任何非@符号的内容,一次或多次。

@清楚地搜索@符号。

\.搜索.字符(自.搜索任何字符后必须进行转义)

因此,它会查找不包含@的任何字符串,后跟@,后跟任何不包含@的字符串,后跟.,后跟任何字符串不是包含@

答案 2 :(得分:0)

RFC822 address specification的适当验证器(第27页的#34; 6.地址规范"第27页)比小型正则表达式复杂一点。

为了正确地执行此操作,需要语法(如所述rfc中描述的语法),但正则表达式也有效。这样的正则表达式可以在Email::Valid模块中找到,更准确地说是right here。我还没有尝试过Python中的正则表达式(但它在Perl中运行良好)。

AFAIK是检查电子邮件地址是否为rfc822有效的事实上的方法。有关详细信息,另请参阅this SO post

但是现在回答你的问题,正则表达式[^@]+@[^@]+\.[^@]+读作"至少有一个或多个非@,然后是@,然后至少有一个或多个非@,然后是一个点,然后至少有一个或多个非 - "。

相关问题