如何在javascript中找出字符串中的电子邮件和名称

Mar*_*arc 4 javascript regex

我正在使用一个很酷的小部件从gmail/homail/yahoo等导入电子邮件地址.小部件仍然是测试版,我猜这就是为什么它不允许很多配置.它实际上只是用以下数据填充textarea:

"Name one" <foo@domain.com>, "Name Two" <foo@domain.com>, "And so on" <andsoon@gmx.net>

所以我想知道是否有人可以帮我写一个正则表达式或类似的东西,以便将所有值从字符串中取出来放入数组中.所需的格式是:

[{name: 'Name one', email: 'foo@domain'},{name: 'Name Two', email: 'foo@domain'},{name: 'And so on', email: 'andsoon@gmx.net'}]

我是一个完整的正则表达式菜鸟,我不知道如何在javascript中做到这一点.谢谢你的帮助!

Tra*_*er1 11

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)

Run Code Online (Sandbox Code Playgroud)