Извлеките все адреса электронной почты из объемного текста, используя jquery
У меня есть следующий текст:
[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>
Здесь электронные письма отделяются ,
или ;
.
Я хочу извлечь все электронные письма, представленные выше, и сохранить их в массиве. Есть ли простой способ использовать регулярное выражение для получения всех электронных писем напрямую?
Ответы
Ответ 1
Вот как вы можете это сделать:
HTML
<p id="emails"></p>
JavaScript
var text = '[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>';
function extractEmails (text)
{
return text.match(/([a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}
$("#emails").text(extractEmails(text).join('\n'));
Результат
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Источник: Извлечь электронную почту из объемного текста (с регулярными выражениями, JavaScript и jQuery)
Демо 1 здесь
Демо 2 здесь, используя jQuery для каждой итераторной функции
Ответ 2
Вы можете использовать это регулярное выражение:
var re = /(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g;
Вы можете извлечь электронные письма следующим образом:
('[email protected], "assdsdf" <[email protected]>, "rodnsdfald ferdfnson" <[email protected]>, "Affdmdol Gondfgale" <[email protected]>, "truform techno" <[email protected]>, "NiTsdfeSh ThIdfsKaRe" <[email protected]>, "akasdfsh kasdfstla" <[email protected]>, "Bisdsdfamal Prakaasdsh" <[email protected]>,; "milisdfsfnd ansdfasdfnsftwar" <[email protected]>').match(re);
//["[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"]
Ответ 3
Просто обновление принятого ответа. Это не работает для знаков "плюс" в адресе электронной почты. GMAIL поддерживает [email protected]
Я обновил:
return text.match(/([a-zA-Z0-9._+-][email protected][a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
Ответ 4
Для этого вам не нужен jQuery; Сам JavaScript поддерживает встроенные регулярные выражения.
Посмотрите Regular Expression для получения дополнительной информации об использовании регулярного выражения с JavaScript.
Кроме этого, я думаю, что вы найдете точный ответ на свой вопрос где-то еще в Qaru - Как узнать электронные письма и имена из строки в javascript
Ответ 5
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" <[email protected]>, ..., "And so on" <[email protected]>'
var emails = GetEmailsFromString(str)
Источник