Как разобрать / обрезать адреса электронной почты из текста - PullRequest
5 голосов
/ 17 августа 2011

Похоже на этот вопрос , но не уверен, как реализовать в этом случае.

Доверенный пользователь (не нужно заботиться о проверке ввода) печатает / вставляет электронную почтуадреса в текстовое поле.В случае размытия я хотел бы посмотреть на текст и очистить все, что он вводил (обычно после копирования и вставки списка адресов из почтового клиента).

"Bob Smith" <bob@company.com>, joe@company.com, "John Doe"<john@company.com>

будет обрезано до:

bob@company.com, joe@company.com, john@company.com

Ответы [ 5 ]

4 голосов
/ 17 августа 2011

Действительный адрес электронной почты может быть очень странным, поэтому я бы посоветовал не запрещать что-либо в этом поле, в противном случае вполне возможно, что ваша программа бесполезна, поскольку ваши пользователи не смогут отправлять электронную почту на действительные адреса электронной почты.

Чтобы прочитать всю историю см. Этот пост в блоге или зайдите на RFC самостоятельно.

4 голосов
/ 17 августа 2011

Это регулярное выражение должно удалять все в двойных кавычках, а также символы < и >.

/".*?"|[<>]/

В Javascript у вас может быть что-то вроде этого:

line.replace(/".*?"|[<>]/g, '');
3 голосов
/ 16 марта 2012
var emailList = userInput
    .replace(/[^,;]*.?</g, "")
    .replace(/>/g, "")
    .replace(/[,; ]{1,}/g, "\n")
    .replace(/[\n]{2,}/g, "\n")
    .split("\n")

Это позволяет предоставлять список адресов электронной почты в следующих форматах (включая копирование и вставку списка адресов электронной почты из окна Google To):

"Bob Rob"<bob@company.com>, job@company.com; rob@company.com job@somewhere.com

Идентификаторы электронной почты могут быть разделены ,, ; или переводы строк.

1 голос
/ 17 августа 2011

Вы можете использовать метод .math() для быстрого разбора электронных писем в массив:

inputval.match(/[A-z0-9]+@[A-z0-9]+.[A-z]{2,3}/g)

Если вы хотите преобразовать это в строку, вы можете добавить .join(', ') или .join('; ') к этому.Регулярное выражение упрощено.Существует довольно много регулярных выражений для разбора электронных писем, но приведенное выше является упрощенной версией.Он не учитывает субдомены, как указано в комментариях ниже, или составные TLD (он также не учитывает символ + в первой части адреса электронной почты).Замените регулярным выражением, которое соответствует вашим потребностям.

0 голосов
/ 17 августа 2011
myEmailList=userInput.match(/[a-zA-z0-9_.]+@[a-zA-Z0-9_.]+\.(com|org|whatever)/g);
myEmailListString=myEmailList.join(', ');

Или просто введите первую строку, если вы хотите получить массив адресов электронной почты.

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