0

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

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

你能(?:[A-Z0-9-]+\.)详细解释一下它是如何工作的,以及它是如何不匹配john@aol...com和匹配另一个的吗?

4

1 回答 1

2

那是因为 a 的出现.只有一次,所以.不会匹配多个。要匹配..or ...etc ,它必须是\.++表示一次或多次,并且与{1,}

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

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

于 2012-11-17T12:32:41.673 回答