【问题标题】:Regex get whole word email [duplicate]正则表达式获取整个单词电子邮件[重复]
【发布时间】:2019-06-26 01:53:04
【问题描述】:

我在尝试形成正则表达式以从字符串进行匹配以仅获取电子邮件时遇到麻烦,字符串将如下所示:'您好,我们已向 ***foo@hotmail.com 发送电子邮件检查一下”

我想要一个只返回 ***foor@hotmail.com 的匹配项,我已经尝试过使用 a 作为字符串:

a.match(/\b(?=\w*[@*.])\w+\b/g)
//expected ***foor@hotmail.com

但这只会返回 [foo][hotmail],甚至不会返回 .com。

你能帮帮我吗?

提前谢谢你!

【问题讨论】:

标签: javascript regex


【解决方案1】:

您可以尝试使用像^.+ (.+@.+) .*$ 这样的正则表达式。 在 JS 控制台中,您可以使用浏览器对其进行测试:

已编辑

const text = "Hello we have sent an email to ***foo@hotmail.com check it"
const result = text.match(/^.+ (.+@[^ ]+) .*$/)
// returns ["Hello we have sent an email to ***foo@hotmail.com check it", 
"***foo@hotmail.com", index: 0, input: "Hello we have sent an email to ***foo@hotmail.com check it", groups: undefined]

如您所见,result[1] 包含所需的邮件地址“***foo@hotmail.com”。

您也可以使用https://regex101.com 对其进行测试。

【讨论】:

  • 我能知道我的答案被否决的原因吗?
  • 但它包含所需的地址。这不仅仅是地址,也就是说 - 你向自己展示结果是"***foo@hotmail.com check",这不仅仅是电子邮件本身。
  • 可能是我不明白这个问题:您应该获得的需求输出是什么?问题是//expected ***foor@hotmail.com,所以,我想到了一个匹配完整电子邮件地址的正则表达式......
  • 您给出的示例匹配并返回"***foo@hotmail.com check" 作为输出。您甚至自己说“如您所见,result[1] 包含所需的邮件地址“***foo@hotmail.com check” - 所需的输出是 just电子邮件,所以" check" 不应该在那里。
  • 呜呜呜!复制和粘贴错误...我从我的编辑器复制了以前版本的正则表达式 :-( ...感谢您接受它!我编辑我的答案提供正确的正则表达式...
猜你喜欢
  • 2010-11-03
  • 2011-11-19
  • 2010-11-18
  • 2019-05-05
  • 1970-01-01
  • 2018-11-08
  • 2014-12-09
  • 2015-12-20
相关资源
最近更新 更多