我正试图想出一些RegEx来从字符串中提取姓名和电子邮件地址。
我知道这里有很多关于这方面的问题,只是经历了一些,它们对我不起作用。
这是我目前拥有的RegEx
(['(wds*)'s]*)<([a-zd._%+-]+@[a-zd.-]+.[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。
感谢
您可以使用
'?(w+(?:s+w+)*)'?s+<?(S+@[w.-]+.[a-zA-Z]{2,4}b)
查看regex演示
模式解释:
'?
-可选的'
(w+(?:s+w+)*)
-第1组匹配:w+
-1个或多个字母数字/下划线符号(?:s+w+)*
-0个或多个序列的1+空格后面跟有1+字母数字/下划线符号
'?
-可选'
s+
-1个或多个空白符号<?
-可选<
(S+@[w.-]+.[a-zA-Z]{2,4}b)
-第2组匹配S+
-1+非空白符号@
-文字@
[w.-]+
-1个或多个字符:字母数字/下划线、点或连字符.
-文字点[a-zA-Z]{2,4}
-2到4个ASCII字母b
-尾随字边界
这里有两个Regex。使用第一个可以从字符串中取出电子邮件,使用第二个可以获得由两部分组成的名称。
Email
[w.-]+@(([w-]+).)+(w){2,3}
Name
b[a-zA-Z]*[^s@.]bs?b[a-zA-Z]*[^s@.]b