正则表达式以查找字符串中的电子邮件地址

时间:2012-01-31 23:29:30

标签: regex string email-validation

我正在尝试创建一个正则表达式,它将在电子邮件标题中的Cc字段后查找电子邮件地址。我没有对字符串进行编程控制,因此它并不特定于任何特定的编程语言。它只是某些软件集成的一部分,它希望在搜索条件中有一些正则表达式

电子邮件标题如下所示:

Received: by hermit.cdu-staff.local 
    id <01CCE6E3.19910AB8@hetmit.ere-tyumm.local>; Thu, 9 Feb 2012 13:57:14 +0930
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="----_=_NextPart_001_01CCE6E3.19910AB8"
Content-class: urn:content-classes:message
X-MimeOLE: Produced By Microsoft Exchange V6.5
Subject: Email header example
Date: Thu, 9 Feb 2012 13:57:10 +0930
Message-ID: <6434D994F5A495428AB3B69877565EF97040C469A@hermit.cdi-stann.local>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: Email header example
Thread-Index: Aczm4xa7dGVpHUWERSSOuR8HCNmrAw==
From: "Bishnu Paudel" <Bishnu.Paudel@company.com>
To: "Study" <study@company.com>
Cc: "Cameron Loudon" <Cameron.Loudon@company.com>

我已经创建了一个正则表达式,如果字符串是一行字符串(标题中的最后一行),该表达式效果很好。这是表达式

(^|,)\s*.*Cc:.*(bishnu.paudel|cameron.loudon)@company[.]com\s*($|,).

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

以下正则表达式应解决问题

\b[A-Z0-9._%+-]+@yourcompany.com\b

这是正则表达式here的改编。请注意原始网站上有关“有效”电子邮件地址定义为的内容的评论。

答案 1 :(得分:0)

您尚未指定您正在使用的编程语言,但一般情况下,您可以编写如下内容:

(^|,)\s*(admin|clients)@ourcompany[.]com\s*($|,)

这将匹配admin@ourcompany.comclients@ourcompany.com,前提是它前面是字符串开头或逗号(带有可选的空格),后跟逗号或字符串结尾(可选)空白)。

请注意,电子邮件地址实际上非常复杂 - 例如,如果我没记错,admin@ourcompany.com"admin"@ourcompany.com在技术上是等价的 - 所以我要谨慎:这种特殊的解析方法可能不可取。 (基本上,我会问:如果你的正则表达式返回假阳性或假阴性,问题有多大?如果你需要对结果非常有信心,那么这种方法可能不是可行的方法。)< / p>

答案 2 :(得分:0)

我最终通过构建这个正则表达式来完成它。 Cc:.*<(student.admin|study|summer|midyear|changeyourworld)@ourcompany[.]com>匹配标题,例如:

To: <paudel_bishnu@hotmail.com> 
Cc: "studentadmin" <student.admin@ourcompany.com>, "Bishnu Paudel" <Bishnu.Paudel@ourcompany.com> 

但它与目标电子邮件(student.admin)不在Cc字段的第一位的标题不匹配。例如:

To: <paudel_bishnu@hotmail.com> 
Cc: "Bishnu Paudel" <Bishnu.Paudel@ourcompany.com>, "studentadmin" <student.admin@ourcompany.com> 

干杯,