Parsing 如何正确解析名为的电子邮件地址?
我正在阅读电子邮件标题(在Node.js中,对于那些保持分数的人来说),它们各不相同。Parsing 如何正确解析名为的电子邮件地址?,parsing,node.js,email-headers,Parsing,Node.js,Email Headers,我正在阅读电子邮件标题(在Node.js中,对于那些保持分数的人来说),它们各不相同。to字段中的电子邮件地址如下所示: "Jake Smart" <jake@smart.com>, jack@smart.com, "Development, Business" <bizdev@smart.com> “杰克·斯马特”,jack@smart.com“发展、业务” 以及各种其他格式。有没有办法把这些都解析出来 这是我的第一次尝试: 在-上运行split(),将不同的人分成
to
字段中的电子邮件地址如下所示:
"Jake Smart" <jake@smart.com>, jack@smart.com, "Development, Business" <bizdev@smart.com>
“杰克·斯马特”,jack@smart.com“发展、业务”
以及各种其他格式。有没有办法把这些都解析出来
这是我的第一次尝试:
-
上运行split()
,将不同的人分成一个数组我会尝试在一次迭代中完成这一切(性能)。只是把它放在一起(有限的测试):
var header=“\'Jake Smart\”,jack@smart.com“发展,商业”;
警报(标题);
var信息=[];
var电流=[];
var状态=-1;
var temp=“”;
对于(变量i=0;i”){
电流推送(温度);
信息推送(当前);
电流=[];
温度=”;
状态=-1;
}否则{
温度+=c;
}
}否则{
if(c==”的实际格式非常复杂,但这里有一个正则表达式可以工作,但我不能保证它总是能工作
const str=“…”;
const pat=/(?:“([^”]+)”)?要获得完整的内容,您应该将其移植到JS:
它为您提供了所需的所有部件。棘手的一点只是一开始的一组regexp。有一个npm模块用于此-(如果您在windows上或不想编译节点iconv,则使用mimelib noiconv)
其用法是:
var mimelib = require("mimelib-noiconv");
var addressStr = 'jack@smart.com, "Development, Business" <bizdev@smart.com>';
var addresses = mimelib.parseAddresses(addressStr);
console.log(addresses);
// [{ address: 'jack@smart.com', name: '' },
// { address: 'bizdev@smart.com', name: 'Development, Business' }]
var mimelib=require(“mimelib noiconv”);
var addressStr='1〕jack@smart.com"发展,商业",;
var addresses=mimelib.parseAddresses(addressStr);
控制台日志(地址);
//[{地址:'jack@smart.com,名称:'},
//{地址:'bizdev@smart.com,名称:'发展,商业'}]
是否有非节点版本可用?是否可以在前端使用?是否有特定于FirefoxOS的版本,可能也可以在其他浏览器中运行,或者对于具有可移植代码的node/js版本,只需直接使用addressparser模块:请将“m”声明为局部变量
const str = "...";
const pat = /(?:"([^"]+)")? ?<?(.*?@[^>,]+)>?,? ?/g;
let m;
while (m = pat.exec(str)) {
const name = m[1];
const mail = m[2];
// Do whatever you need.
}
npm install mimelib-noiconv
var mimelib = require("mimelib-noiconv");
var addressStr = 'jack@smart.com, "Development, Business" <bizdev@smart.com>';
var addresses = mimelib.parseAddresses(addressStr);
console.log(addresses);
// [{ address: 'jack@smart.com', name: '' },
// { address: 'bizdev@smart.com', name: 'Development, Business' }]