首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regexp帮助:为什么此输出包含重复项?

Regexp帮助:为什么此输出包含重复项?
EN

Stack Overflow用户
提问于 2010-12-05 09:52:06
回答 3查看 82关注 0票数 0

我有一个字符串:remove_names = "Jimmy X" <jimmy@x1.com>, "jimmy@x2.com <jimmy@x2.com>, "spitfire672@x3.com" <spitfire672@x3.com>

我正在尝试提取电子邮件地址

代码语言:javascript
运行
复制
emailsArray = remove_names.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);

这会使emailsArray成为[jimmy@x1.com,jimmy@x2.com,jimmy@x2.com,spitfire672@x3.com,spitfire672@x3.com]

很明显有复制品。

我认为我需要将regexp参数更改为match(...),这样结果中就不会包含重复项(即扫描< >)。如果能帮上忙我会很感激的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-05 13:08:02

如果您知道<>之间的任何内容都是有效的电子邮件,那么最简单的方法就是将其匹配并忽略其他文本。/<([^>]+)>/g将查找<>括号中的所有文本。然后,您可以通过获取不包含第一个和最后一个字符的子字符串来删除括号本身,或者使用$1捕获组。

票数 0
EN

Stack Overflow用户

发布于 2010-12-05 09:54:27

忽略这是not quite a valid email regular expression...的事实

您的正则表达式缺少尖括号:

代码语言:javascript
运行
复制
/<([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)>/
票数 1
EN

Stack Overflow用户

发布于 2010-12-05 13:37:50

它不匹配重复项。第一个jimmy@x2.com是总体匹配,第二个jimmy@x2.com是第一个捕获组的内容。去掉括号,它应该可以像您预期的那样工作。

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

https://stackoverflow.com/questions/4356951

复制
相关文章

相似问题

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