Parsing 如何正确解析名为的电子邮件地址?

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(),将不同的人分成

我正在阅读电子邮件标题(在Node.js中,对于那些保持分数的人来说),它们各不相同。
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' }]