Регулярное выражение JS. Игнорирование текста в определённых тегах

363
09 августа 2017, 21:43

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

<div id="text">
  <p>Сайт рыбатекст поможет дизайнеру, верстальщику, вебмастеру сгенерировать несколько абзацев более менее осмысленного текста рыбы на русском языке, а начинающему оратору отточить навык публичных выступлений в домашних условиях. При создании генератора мы использовали небезизвестный универсальный код речей. Текст генерируется абзацами случайным образом от двух до десяти предложений в абзаце, что позволяет <a href="/test">сделать текст более привлекательным</a> и живым для визуально-слухового восприятия.</p>
</div>
<script>
var str = document.getElementById('text').innerHTML;
var ar_pl = ['верстальщик', 'дизайнер', 'вебмастер', 'текст'];
var array = [
    ['дизайнер', '/designer'],
    ['верстальщик', '/coder'],
    ['вебмастер', '/webmaster'],
    ['текст', '/texts'],
];
var regexp, context, array, key;
for (key in array) {
  prg = '(?:^|[^а-яё])('+array[key][0]+'(?:[а-яё]*))';
  regexp = new RegExp(prg, 'gi');
  if (!context) {
    context = str.replace(regexp, ' <a href="'+array[key][1]+'">$1</a>');
  } else {
    context = context.replace(regexp, ' <a href="'+array[key][1]+'">$1</a>');
  }
}
if (context) {
    document.getElementById('text').innerHTML = context;
}
</script>
READ ALSO
Баг в пошаговой форме [требует правки]

Баг в пошаговой форме [требует правки]

Помогите пожалуйста, в форме http://usealexkizyma

248
Angular2 CLI backend

Angular2 CLI backend

Всем здравствуйте, с помощью angular cli создал проект, я только учусь и никак не могу понять где писать бэкэнд, где создать файл или есть какой-то...

260
Как заблокировать нажатие кнопки на JS?

Как заблокировать нажатие кнопки на JS?

Задача: если не заполнено одно - не дать отправить формуВарианта 2:

636
Как прокрутить один из двух скроллбаров наверх?

Как прокрутить один из двух скроллбаров наверх?

Имеется два независимых скроллбара на страницеscrollTo(0, 0) перестал работать после добавление второго скроллбара

313