这个用于电子邮件地址验证的正则表达式如何工作?

时间:2012-11-17 12:19:17

标签: regex email-validation capturing-group regex-group

在搜索用于电子邮件地址验证的正则表达式时,我遇到了此页面:http://www.regular-expressions.info/email.html。我无法理解。

  

它说:\ b [A-Z0-9 ._%+ - ] + @(?:[A-Z0-9 - ] +。)+ [AZ] {2,4} \ b将匹配约翰@ server.department.company.com但不是john @ aol ... com。

您能详细解释一下(?:[A-Z0-9-]+\.)的工作原理以及它与john@aol...com的匹配方式是否与另一个相匹配?

1 个答案:

答案 0 :(得分:2)

这是因为.的外观只有一次,因此不会匹配多个.。要匹配.....等,它必须为\.++表示一次或多次,并且与{1,} <相同/ p>

正则表达式说(?:[A-Z0-9-]+\.)+所以它是一个或多个字母数字(或下划线),带有一个点,整个事情可以重复一次或多次,所以c.c.c.会匹配,但是{{1不会。

c..c.c.是非捕获的,通常更快。您可以使用(?: ),它也可以正常工作,但速度较慢,匹配的文本会进入捕获组。