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

Regex 这个用于电子邮件地址验证的正则表达式是如何工作的?,regex,email-validation,capturing-group,regex-group,Regex,Email Validation,Capturing Group,Regex Group,在搜索用于电子邮件地址验证的正则表达式时,我遇到了以下页面:。我不明白 它说:\b[A-Z0-9.Z%+-]+@(?[A-Z0-9-]+])+[A-Z]{2,4}\b将匹配john@server.department.company.com但不是john@aol...com. 你能详细解释一下(?:[A-Z0-9-]+\)是如何工作的,以及它是如何与不匹配的吗john@aol...com是否与另一个匹配?这是因为的外观只有一次,因此多个将不匹配。对于要匹配的。或..等,它必须是\.+(+表示一次

在搜索用于电子邮件地址验证的正则表达式时,我遇到了以下页面:。我不明白

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


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

这是因为
的外观只有一次,因此多个
将不匹配。对于要匹配的
..
等,它必须是
\.+
+
表示一次或多次,与
{1,}
相同)

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


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

它是非捕获的,因此这个正则表达式的作者觉得没有必要将其放入捕获组,以获得更好的速度。因此,这里,它只是为了表达式的速度,对吗?burhan提供的链接明确提到cas需要为此正则表达式启用不区分e的选项。这里不存在区分大小写的问题。请注意,在电子邮件地址中的
@
之后,多个
无效,因此您不需要
john@aol...com
匹配!