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

RegEx to extract Contact Name and email from string

我正在尝试使用一些正则表达式从字符串中提取姓名和电子邮件地址。

我知道这里有很多关于此的问题,只是解决了一些问题,但它们对我不起作用。

这是我目前使用的正则表达式

([\'(\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>

所以我猜你会看到 ' 和 < > 都可以完全是可选的。

我需要它来获得两组结果,一组用于联系人姓名,一组用于电子邮件。

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

谢谢

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

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

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

你可以使用

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

regex demo

图案说明:

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