REGEX - 匹配电子邮件域,但仅在n次出现后才匹配

时间:2013-10-22 09:08:42

标签: regex expression

我有一个简单的正则表达式,可以检测以下任何格式的'domain.com'电子邮件地址:

user@domain.com
user.one@domain.com
user_one@domain.com
user-one@domain.com

使这个为我工作的正则表达式写成:

\b([a-z0-9_\.-]+)@domain.com

此表达式将检测并匹配上述任何一个的第一次出现。

然而,我希望正则表达式只能在之后匹配,比方说,检测到10次出现。

例如,用户提交文档中包含5个电子邮件地址的文档。 在这种情况下,表达式应该忽略该文档。 但是,如果用户在文档中提交包含10个或更多电子邮件地址的文档,则表达式应检测到此内容。

我尝试了使用{10,}量词的无数可能的解决方案,其中一些是从这个网站获取的示例,但我认为这与我将表达式分组的方式有关导致它失败。

非常感谢您的协助。

3 个答案:

答案 0 :(得分:0)

您可以为匹配的每个域使用计数器,然后包含一个域,当且仅当它已匹配至少10次。

答案 1 :(得分:0)

您可以使用此正则表达式:

(?:[^@]+@\S+){10}\s+([\w.-]+)(?=@domain\.com)

现在,当您访问引用#1时,它将在恰好10次出现后为您提供电子邮件名称部分。

答案 2 :(得分:0)

如果两个电子邮件地址之间可能有任何字符,请使用((yourregexp).*){10,}

((\b([a-z0-9_\.-]+)@domain.com).*){10}