Я выделяю некоторый текст, например так:
var newHTML = oldHTML.replaceAll(filter, "<span class='highlight'>" + filter + "</span>");
У меня есть эта функция, которую я использую для замены html содержимого.
String.prototype.replaceAll = function (search, replacement) {
var target = this;
return target.replace(new RegExp(search, 'g'), replacement);
};
Поскольку я не хочу тормозить никакие гиперссылки (но я хочу сохранить другие теги html, чтобы сохранить форматирование), мне нужно исключить теги <a href>
. Кто-нибудь знает, как?
Изменить, пример ввода и вывода, чтобы уточнить:
input
<a href="https://www.youtube.com" target="_blank">youtube</a>
выделять только текст YouTube (соответствует только второй "YouTube")
<a href="https://www.youtube.com" target="_blank"><span class="highlight">youtube</span></a>
Правка 2, нашел его - это нужное мне регулярное выражение.
youtube(?!([^<]+)?>)
Почему-то это не работает в моей функции (нет совпадений для
input.replaceAll("youtube","<span class='highlight'>youtube</span>")
). Есть догадки почему?
String.prototype.replaceAll = function (search, replacement) {
var target = this;
//return target.replace(new RegExp(search, 'g'), replacement);
var regex = "/" + search + "(?!([^<]+)?>)/g";
return target.replace(regex, replacement);
};