Node.js:正则表达式从字符串中读取电子邮件

时间:2011-05-06 19:09:44

标签: javascript node.js

如何从"XXX <email@email.com>"获取电子邮件地址?我不想得到“&lt;&gt;”。

谢谢!

7 个答案:

答案 0 :(得分:4)

这是基于Tejs答案的一个。简单易懂,我觉得更优雅

// Split on < or >
var parts = "XXX <email@email.com>".split(/[<>]/);
var name = parts[0], email = parts[1];

答案 1 :(得分:3)

非常简单(不需要正则表达式!)

var components = emailAddress.split('<')

if(components.length > 1)
{
    var emailAddress = components[1].replace('>', '');
}

答案 2 :(得分:3)

function getEmailsFromString(input) {
    var ret = [];
    var email = /\"([^\"]+)\"\s+\<([^\>]+)\>/g;    
    var match;

    while ( match = email.exec(input) ) {
        ret.push({'name': match[1], 'email': match[2]});
    }    

    return ret;
}

var str = '"Name one" <foo@domain.com>, ..., "And so on" <andsoon@gmx.net>';
var emails = getEmailsFromString(str);

信用:How to find out emails and names out of a string in javascript

答案 3 :(得分:1)

此正则表达式适用于您的示例。

/<([^>]+)/

它在'&lt;'之后搜索任何内容这不是'&gt;'并在你的比赛中返回。

答案 4 :(得分:0)

^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$

匹配电子邮件地址,包括一些较新的顶级域名扩展名,例如信息,博物馆,名称等。还允许直接绑定到IP地址的电子邮件。

答案 5 :(得分:0)

如果我正确理解你,那就不是积极的。如果你想获得电子邮件域即gmail.com或hotmail.com,那么你可以使用

var x =string.indexOf("@");  var y =string.subString(x)

这将为您提供字符串y作为电子邮件域。

答案 6 :(得分:0)

要抓住尖括号内的内容,您可以使用以下内容:

var pattern = /<(.*)>/;
pattern.exec("XXX <foo@bar.com>"); // this returns ["<foo@bar.com>", "foo@bar.com"]