RegEx从字符串中提取联系人姓名和电子邮件

时间:2016-05-18 18:41:53

标签: regex string asp-classic

我试图想出一些RegEx来从字符串中提取姓名和电子邮件地址。

我知道这里有很多关于此的问题,只是经历了一些问题而他们不能为我工作。

这是我到目前为止的RegEx

([\'(\w\d\s*)\'\s]*)<([a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b)>

字符串可以像

Name Surname email@domain.com

'Name Surname' <email@domain.com>

'Name Surname' email@domain.com

Name Surname <email@domain.com>

所以我想你可以看到这两个&#39;并且&lt; &GT;可以完全是可选的。

我需要它才能将结果分为两组,一组用于联系人名称,另一组用于电子邮件。

由于公司的遗留代码,我使用的是经典的asp。

由于

2 个答案:

答案 0 :(得分:3)

您可以使用

'?(\w+(?:\s+\w+)*)'?\s+<?(\S+@[\w.-]+\.[a-zA-Z]{2,4}\b)

请参阅regex demo

模式说明

  • '? - 可选的'
  • (\w+(?:\s+\w+)*) - 第1组匹配:
    • \w+ - 一个或多个字母数字/下划线符号
    • (?:\s+\w+)* - 0个或更多1+个空格序列,后跟1个字母数字/下划线符号
  • '? - 可选的'
  • \s+ - 一个或多个空格符号
  • <? - 可选的<
  • (\S+@[\w.-]+\.[a-zA-Z]{2,4}\b) - 第2组匹配
    • \S+ - 1个非空白符号
    • @ - 文字@
    • [\w.-]+ - 1个或多个字符:字母数字/下划线,点或连字符
    • \. - 一个文字点
    • [a-zA-Z]{2,4} - 2到4个ASCII字母
    • \b - 尾随字边界

答案 1 :(得分:0)

这是两个正则表达式。使用第一个从字符串中获取电子邮件,使用第二个获取两部分名称。

Email
[\w\.\-]+@(([\w\-]+)\.)+(\w){2,3}

Name
\b[a-zA-Z]*[^\s@.]\b\s?\b[a-zA-Z]*[^\s@.]\b