【发布时间】:2011-08-20 10:22:23
【问题描述】:
如何获取"XXX <email@email.com>" 的电子邮件地址?我不想得到“”。
谢谢!
【问题讨论】:
-
您能否提供一个更好的示例来说明您正在使用的输入类型以及您所说的“”是什么意思?
-
输入在字符串内。当您收到一封电子邮件时:“First Last
”。我想知道是哪封邮件。
标签: javascript node.js
如何获取"XXX <email@email.com>" 的电子邮件地址?我不想得到“”。
谢谢!
【问题讨论】:
标签: javascript node.js
如果我对您的理解正确,则不肯定。如果您想获取电子邮件域,即 gmail.com 或 hotmail.com,那么您可以使用
var x =string.indexOf("@"); var y =string.subString(x)
这将为您提供字符串 y 作为电子邮件域。
【讨论】:
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
【讨论】:
要抓住尖括号内的内容,您可以使用以下内容:
var pattern = /<(.*)>/;
pattern.exec("XXX <foo@bar.com>"); // this returns ["<foo@bar.com>", "foo@bar.com"]
【讨论】:
此正则表达式适用于您的示例。
/<([^>]+)/
它会搜索 '' 的任何内容,并在您的匹配项中返回。
【讨论】:
这是一个基于 Tejs 的回答。简单易懂,我觉得更优雅一点
// Split on < or >
var parts = "XXX <email@email.com>".split(/[<>]/);
var name = parts[0], email = parts[1];
【讨论】:
^[_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 地址。
【讨论】:
真的很简单(不需要正则表达式!)
var components = emailAddress.split('<')
if(components.length > 1)
{
var emailAddress = components[1].replace('>', '');
}
【讨论】: