繁体   English   中英

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

[英]Node.js: Regular Expression to read email from string

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

谢谢!

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

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

真的很简单(不需要正则表达式!)

var components = emailAddress.split('<')

if(components.length > 1)
{
    var emailAddress = components[1].replace('>', '');
}
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);

信用: 如何从JavaScript中的字符串中找出电子邮件和姓名

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

/<([^>]+)/

它搜索“ <”之后不是“>”且在您的匹配项中返回的任何内容。

^[_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地址。

如果我对您的理解正确,那不是肯定的。 如果您想获取电子邮件域,即gmail.com或hotmail.com,则可以使用

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM