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