我试图想出一些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。
由于
答案 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