在搜索用于电子邮件地址验证的正则表达式时,我遇到了此页面: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
的匹配方式是否与另一个相匹配?
答案 0 :(得分:2)
这是因为.
的外观只有一次,因此不会匹配多个.
。要匹配..
或...
等,它必须为\.+
(+
表示一次或多次,并且与{1,}
<相同/ p>
正则表达式说(?:[A-Z0-9-]+\.)+
所以它是一个或多个字母数字(或下划线),带有一个点,整个事情可以重复一次或多次,所以c.c.c.
会匹配,但是{{1不会。
c..c.c.
是非捕获的,通常更快。您可以使用(?: )
,它也可以正常工作,但速度较慢,匹配的文本会进入捕获组。