Как узнать адреса электронной почты и имена из строки в JavaScript - PullRequest
4 голосов
/ 02 марта 2010

Я использую классный виджет для импорта адресов электронной почты из 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 ]

10 голосов
/ 02 марта 2010
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)

3 голосов
/ 02 марта 2010
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;
    }

Источник здесь

0 голосов
/ 02 марта 2010

Для того, чтобы достичь этого, вам придется прочитать некоторую документацию. Регулярные выражения не очень сложны, но к ним привыкли.

Вот хорошее место для начала Регулярное выражение Javascript

И попробуйте попрактиковаться в написании регулярных выражений с использованием Rubular

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...