PCRE电子邮件地址正则表达式

问题描述 投票:-1回答:1

我尝试创建PCRE正则表达式来捕获来自大量文本]的电子邮件地址>。我想出的当前正则表达式是:

(?:[^\w]|^)([a-z0-9+_\-\.]+[^\.]@(?:[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?)(?:[^\w]|$)

此正则表达式太慢了(问题Q,为什么这么慢?难道是未被捕获的组会影响性能吗?)。我知道在所有有效电子邮件的覆盖范围和性能之间会有所取舍,我的目标是获得最常见的格式,例如:

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
user%[email protected]

但不是无效地址,例如:

Abc.example.com
A@b@[email protected]
A.....example.com

例如,A @ b @ c @ example.com无效,但我不希望正则表达式也捕获A @ b @ [email protected]

[email protected]”!我试图接近负数来检查例如是否存在@例如(?

我尝试创建一个PCRE正则表达式来捕获大量文本中的电子邮件地址。我想出的当前正则表达式是:(?:[^ \ w] | ^)([a-z0-9 + _ \-\。] + [^ \。] @(?:[a-z0-9 ](?:[a-z0-9 \-] * [a-z0-9])\。)+ [a-z0 -...

regex pcre
1个回答
1
投票

我认为您将其设置得过于复杂。我将通过以下方式简化正则表达式:

© www.soinside.com 2019 - 2024. All rights reserved.