querySelector и regex

273
14 марта 2017, 12:35

Добрый День. Нужно решить следующую задачу. Найти все email адреса на любой странице и изменить им цвет. То есть адрес может быть как ссылкой, так и просто частью какого либо текста. Как пример можно привести HTML mail.ru, где email адрес находится рядом с "входящими" или возле выхода. Проблема в том, что бы найти такие адреса на странице. Функция с валидацией адреса есть

    function checkEmailValidate (emailAddress) {
      const regexEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
      regexEmail.test(emailAddress)
    }
Answer 1
Рабочий код:

var replaced = $("#content").html().replace( /(?![^<]+>)([A-Za-z0-9_\-\.]+\@[A-Za-z0-9_\-\.]+\.[A-Za-z]{2,4})/g,'<span class="red">$1</span>'); 
$("#content").html(replaced);
.red{color:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="content"> 
Текст внутри тега a <a href="mailto:info@mail.ru">info@mail.ru</a><br> 
Просто адрес, написанный в тексте info@mail.ru 1 
</div>

Объяснение:

html() - получаем текст страницы вместе с тегами.

(?![^<]+>) - проверяем, чтобы адрес не был внутри тега, например href="mailto:info@mail.ru".

^ и $ - в начале и в конце нужно убрать, эти символы означают начало и конец строки

g - все вхождения

READ ALSO
SVG embed fail by object tag

SVG embed fail by object tag

Я сделал пример: https://jsfiddlenet/wjty76Lx/ Почему это работает, если я вставляю в инлайн? но не работает, если я использую тег?Почему так?

257
Как заставить выходить таблицу за края родительского контейнера

Как заставить выходить таблицу за края родительского контейнера

Есть таблица 4-мя столбцамиВсе столбцы имеют одинаковую ширину

332
Вызов функции другого фрейма

Вызов функции другого фрейма

Есть страница с фреймами:

309
зацикливание в Chrome при редиректе (PHP - JS)

зацикливание в Chrome при редиректе (PHP - JS)

Проблема: периодически появляется зацикливание в СHROMEЕсть страница поиска на сайте

232