Показать сообщение отдельно
  #1 (permalink)  
Старый 02.04.2014, 12:04
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

replace исключая в атрибутах тегов
Доброго всем времени суток!
Есть небольшая задачка, сделать подсветку синтаксиса кода на странице.
Есть массив зарезервированных слов, которые должны подсвечиваться в тексте.
скрипт проходит по этому массиву примерно так:
for (var k in words) {
text = replaceAll(text, words[k]);
}

Внутри функции replaceAll тоже всё просто
tempString = string.replace(new RegExp(word, 'g'), '<span class="codeword">'+word+'</span>');

Так вот тут возникает проблемка, если среди зарезервированных слов встречается, к примеру слово class, то оно учитывается и внутри тегов и тег
<span class="codeword">
превращается в
<span <span class="codeword">class="codeword">

Прошу подсказать, как реализовать замену всего этого добра исключая теги. То есть смотреть текст только между тегами.
Я понимаю, что нужно составить регулярное выражение, наверное, что-то из цикла:
replace(/>([^"]+)</g, '>$1<');
только вот мне куда-то сюда ещё нужно вместить значение моей переменной word.
И тогда ещё встанет вопрос, а как же быть, если тегов нет вовсе...
Я честно говоря, плохо разбираюсь в регулярных выражениях в принципе. Прошу подсказки.

Заранее благодарю!
Ответить с цитированием