首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用哪个正则表达式来查找标签内的电子邮件地址?

我可以使用哪个正则表达式来查找标签内的电子邮件地址?
EN

Stack Overflow用户
提问于 2020-06-12 04:56:41
回答 3查看 239关注 0票数 1

我的问题

我有一个字符串与标签之间的电子邮件地址,我需要提取电子邮件。例如,从这里:

代码语言:javascript
复制
var myString = "This email for John <john@mail.com> needs to be extracted"

我想提取john@mail.com

我试图修复

我想出了一个正则表达式来从字符串中提取电子邮件地址(它不需要验证电子邮件,只是一个简单的正则表达式):

代码语言:javascript
复制
/<\S*@\S*>/gi

如果我的字符串没有其他标记,比如前一个标签,它就能正常工作。但是,当它发现这种情况时,这个正则表达式就失败了:

代码语言:javascript
复制
var myString = "This bold email for John <b><john@mail.com><b/> needs to be extracted"

如何改进我的正则表达式,使其只匹配电子邮件,而忽略其他标记?

P.S.:我的最终目标是把这些标签从字符串中去掉(只有电子邮件标签),所以我也愿意接受其他的建议。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-12 06:45:42

可以在匹配@之前和之后使用否定字符类 [^<>\s@]排除匹配括号、@和空格字符

如果您想匹配0或更多次,可以使用*而不是+

代码语言:javascript
复制
<[^<>\s@]+@[^<>\s@]+>

Regex演示

票数 1
EN

Stack Overflow用户

发布于 2020-06-12 05:07:24

很难找到一个完美的正则表达式来匹配所有的电子邮件地址和唯一的电子邮件地址,但这应该适用于您的情况:

/<[^<\s]*\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b[^>\s]*>/gi

票数 1
EN

Stack Overflow用户

发布于 2020-06-12 05:10:31

代码语言:javascript
复制
"This bold email for John <b><john@mail.com><b/> needs to be extracted".match(/<\w+@\w+\.\w+/>)[0];
// <john@mail.com>

\w匹配字母、数字和下划线。后面跟着一个+,它匹配这样一个不间断的字符串。

.是正则表达式中的一个特殊字符,因此必须转义。

所以在regex \w+@\w+\.\w+中,第一个\w+匹配john,然后@匹配@。下一个\w+匹配mail\.匹配.,最后一个\w+匹配com

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62337758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档