[英]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);
此正则表达式适用于您的示例。
/<([^>]+)/
它搜索“ <”之后不是“>”且在您的匹配项中返回的任何内容。
^[_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.