2015-07-28 5 views
0

Мне нужно заменить HTML (совпадающие слова) страницы на загрузку. Мне нужно только заменить слова, совпадающие с тегами <div> и <p>. Для этого я использую angularJS.AngularJS replace using regex

Моя функция до сих пор -

Но это не обновление HTML страницы правильно. Он заменяет все предложение вместо того, чтобы просто заменять совпадающее слово.

Так, например, HTML является

<p>I am a dog.</p> 
<p>I am a cat.</p> 
<p>I am not a dog but a cat.</p> 

Я хочу, чтобы результат

<p>I am a TESTdog.</p> 
<p>I am a TESTcat.</p> 
<p>I am not a TESTdog but a TESTcat.</p> 
+0

' '[^<> \\ n] *? \\ b (Cat | Dog | Fish) + ') \\ b [^ < > \\ n] *? ''три одинарных кавычки. –

+0

Извините, обновлено. Скопировал его прямо из моего JS-файла. – NomadTraveler

+0

все еще имеет три кавычки. Проверьте окраску, красный. –

ответ

0

Как я вижу, вы путать элемент с полной HTML и элементом для конкретного <p> тега.

здесь

angular.forEach(elementsList, function(_element){ 

вы идете в elementList, который содержит <p> тег и _element относится к конкретным <p> из этого списка, но затем Вы получаете HTML от этого элемента

var eHtml = $(_element).html(); 

заменить его

eHtml.replace(regex, function(fullMatch, match){ ... }) 

и inst ерты в главном e элемента

e.html(eHtml.replace(...)) 

поэтому вместо замены HTML для конкретного тега, вы заменяете полный HTML, и сделать это на каждой итерации цикла.

Так, возможно, вы должны использовать $(_element) вместо этого просто e

$(_element).html(eHtml.replace(...)) 

UPDATE также кажется, что вы регулярное выражение может быть сведено к

/\b(Cat|Dog|Fish)\b/gi 

и используется как

var regex = /\b(Cat|Dog|Fish)\b/gi; 
$(_element).html(eHtml.replace(regex, "Test$1")); 
+0

Это сработало, спасибо! – NomadTraveler