从字符串中提取电子邮件地址

时间:2017-05-11 10:43:35

标签: javascript regex string

我有一个这样的字符串:

Francesco Renga <francesco_renga-001@gmail.com>

我只需提取电子邮件,即francesco_renga-001@gmail.com。

我怎样才能在nodejs / javascript中执行此操作&#34; elegant&#34;方式是什么?

2 个答案:

答案 0 :(得分:2)

使用正则表达式,如果您的字符串模式始终为Some text<email>Some text<email>, Some text<email> <email>,则可以使用这个简单的<(.*?)>

Demo

其他解决方案

使用正向前瞻:[^<]+(?=>),这是一个片段和demo

var text = "Francesco Renga <francesco_renga-001@gmail.com>, Marty McFly <mmcfly@gmail.com> Marty McFly <mmcfly@gmail.com> <mmcfly2@gmail.com>";
var re = /[^< ]+(?=>)/g;

text.match(re).forEach(function(email) {
  console.log(email);
});

<强>解释

[^<]+在一次和无限次之间匹配除<之外的任何内容

(?=>)后跟>

简单,不需要任何组。

答案 1 :(得分:1)

这是一个简单的示例,展示了如何在JavaScript中使用正则表达式:

&#13;
&#13;
var string = "Francesco Renga <francesco_renga-001@gmail.com>"; // Your string containing
var regex = /<(.*)>/g; // The actual regex
var matches = regex.exec(string);
console.log(matches[1]);
&#13;
&#13;
&#13;

这是正则表达式/<(.*)>/的分解:

  • //必须定义正则表达式
  • <>只匹配字符串中的两个<>
  • ()括号&#34;捕获&#34;你在寻找什么。在这里,他们获取了里面的邮件地址。
  • .*.表示&#34;任何字符&#34;和*表示&#34;任意次。结合起来,它意味着&#34;任何字符的任何次数&#34;,它位于<>内,对应于邮件所在的位置。