Я создаю парсер, который защищает от спама и сбора электронных писем из блока текста, который поступает от tinyMCE (поэтому он может содержать или не содержать теги html)
Я пробовал регулярные выражения, и до сих пор это было успешно:
/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i
проблема в том, что мне нужно игнорировать все адреса электронной почты с помощью mailto hrefs. например:
<a href="mailto:test@mail.com">test@mail.com</a>
должен возвращать только второй адрес электронной почты.
Чтобы получить представление о том, что я делаю, я поменяю адреса электронной почты в блоке так, чтобы приведенный выше пример выглядел так:
<a href="mailto:test@mail.com">moc.liam@tset</a>
Проблема с моим текущим регулярным выражением в том, что он также заменяет тот, что в href. Есть ли способ сделать это с помощью одного регулярного выражения? Или я должен проверить один, а затем другой? Есть ли для меня способ сделать это, просто используя gsub, или мне нужно использовать магию nokogiri / hpricot и еще много чего для разбора mailtos? Заранее спасибо!
Вот мои ссылки:
so.com / вопросы / 504860 / экстракт-почтовый-адрес, из-а-блока-в-текста
so.com / вопросы / 1376149 / регулярное выражение-для-извлечения-а-MailTo-адрес
Я также тестирую, используя это:
http://rubular.com/
редактировать
вот мой текущий код помощника:
def email_obfuscator(text)
text.gsub(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) { |m|
m = "<span class='anti-spam'>#{m.reverse}</span>"
}
end
, что приводит к этому:
<a target="_self" href="mailto:<span class='anti-spam'>moc.liamg@tset</span>"><span class="anti-spam">moc.liamg@tset</span></a>