我有一个这样的字符串:
Francesco Renga <francesco_renga-001@gmail.com>
我只需提取电子邮件,即francesco_renga-001@gmail.com。
我怎样才能在nodejs / javascript中执行此操作&#34; elegant&#34;方式是什么?
答案 0 :(得分:2)
使用正则表达式,如果您的字符串模式始终为Some text<email>
或Some text<email>, Some text<email> <email>
,则可以使用这个简单的<(.*?)>
其他解决方案
使用正向前瞻:[^<]+(?=>)
,这是一个片段和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中使用正则表达式:
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;
这是正则表达式/<(.*)>/
的分解:
/
和/
必须定义正则表达式<
和>
只匹配字符串中的两个<
和>
()
括号&#34;捕获&#34;你在寻找什么。在这里,他们获取了里面的邮件地址。.*
:.
表示&#34;任何字符&#34;和*
表示&#34;任意次。结合起来,它意味着&#34;任何字符的任何次数&#34;,它位于<
和>
内,对应于邮件所在的位置。