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

时间:2010-03-02 16:30:26

标签: javascript regex

我正在使用酷小部件从gmail / homail / yahoo等导入电子邮件地址。小部件仍然是测试版,我猜这就是为什么它不允许大量配置。它实际上只是用以下数据填充文本区域:

"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中这样做。谢谢你的帮助!

3 个答案:

答案 0 :(得分:10)

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)

答案 1 :(得分:3)

function findEmailAddresses(StrObj) {
        var separateEmailsBy = ", ";
        var email = "<none>"; // if no match, use this
        var emailsArray = StrObj.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
        if (emailsArray) {
            email = "";
            for (var i = 0; i < emailsArray.length; i++) {
                if (i != 0) email += separateEmailsBy;
                email += emailsArray[i];
            }
        }
        return email;
    }

Source here

答案 2 :(得分:0)

为了实现您必须阅读一些文档。正则表达式并不是很复杂,但它们已经习惯了。

这是一个开始Javascript Regular Expression

的好地方

尝试练习写作regex using rubular