Как создать массив адресов электронной почты, содержащийся в блоке текста? Я попыталсяИзвлечь адреса электронной почты из блока текста
addrs = text.scan(/ [email protected]+? /).map{|e| e[1...-1]}
но (не удивительно) не работает надежно.
Как создать массив адресов электронной почты, содержащийся в блоке текста? Я попыталсяИзвлечь адреса электронной почты из блока текста
addrs = text.scan(/ [email protected]+? /).map{|e| e[1...-1]}
но (не удивительно) не работает надежно.
Howabout это для (чуть-чуть) лучше регулярного выражения
\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b
Вы можете найти это здесь:
Просто FYI, проблема с электронной почтой является то, что вы позволяете только один тип разделителя до или после адреса электронной почты. Вы будете соответствовать только «@», если они разделены пробелами.
Существует несколько TLD длиной более 4 символов, например «музей». –
Из статьи: «Наиболее часто цитируемый пример - это адреса домена верхнего уровня .museum, который длиннее четырех букв, которые мое регулярное выражение позволяет домену верхнего уровня. Я принимаю этот компромисс, потому что число людей, использующих .museum очень низкий " Уменьшает false-pos. – user54650
Завершение приведенной выше цитаты: «Чтобы включить музей, вы можете использовать^[A-Z0-9 ._% + -] + @ [A-Z0-9 .-] + \. [AZ] {2, 6} $, но тогда есть еще один компромисс: это регулярное выражение будет соответствовать [email protected] Гораздо более вероятно, что Джон забыл ввести домен верхнего уровня .com « – user54650
http://www.codinghorror.com/blog/archives/000214.html –
@Mehrdad: Не согласен. Регулярные выражения используют одну цель, но сервер очень хорошо используется при правильном использовании. Обнаружение адресов электронной почты работает нормально. Просто прокомментируйте это. – user54650
cmartin: Я ничего не сказал! Я только что связался со связанным сообщением от Джеффа :) –