Ребята, спасибо большое! Очень выручили! И первый, и второй варианты работают. А я все ломал голову, что не так сделал. Выкинул последнюю проверку вообще нафиг, т.к. знак ";" в моем случае не кретичен., а в другом месте его вообще пустил "под нож". Я не совсем (вернее, "совсем не") разбираюсь в JS, дохожу до всего методом проб и ошибок. Вот например такую же регулярку пытаюсь использовать для обратной задачи: в заданном тексте найти нужный параметр и взять его значение, которое упоминается последним (если параметр по ошибке написан несколько раз). Перепробовал все что прочитал, все не получается. В результате тупо прошелся регулярками и получил код, от которого самому стало страшно. Код работает, но не совсем: берет не последнее упоминание, а первое. Пробовал использовать в reg_2 ?!, но не получается. Пока рабочий вариант такой: (Просьба ногами не пинать, я еще только изучаю JS):
<script>
var text_stilja = 'COLOR: #aaaaaa;color: #bbbbbb;background-color: #xxxxxx;color: #cccccc;color: #dddddd;';
var tshto_najti = 'color';
var rezultat_3= '';//--по умолчанию пустой
var reg = new RegExp('((^|;)\\s*)' + tshto_najti + '(\\s*:\\s*)([^;]*)','gi');
if (reg.test(text_stilja))
//--есть параметр, заменяю
{
var rezultat_1= text_stilja.replace(reg,'<<<<<$4>>>>>');
var reg_2 = new RegExp('(([^<]*)(<<<<<([^>]*)>>>>>)(.*))','i');
var rezultat_2= rezultat_1.replace(reg_2,'<<<<<$3>>>>>');
var reg_3 = new RegExp('(<|>)','g');
rezultat_3= rezultat_2.replace(reg_3,'');
}
window.alert('Что было: \n\n'+text_stilja+'\n\n\n\n После первой регулярки (экранирую значения нужного мне параметра): \n\n'+rezultat_1+'\n\n\n\n После второй регулярки (надо взять последнее упоминание, отсекая все лишнее; как и в браузере, последнее определение одного и того же самое важное): \n\n'+rezultat_2+'\n\n\n\n После третьей регулярки (убираю экранирование): \n\n'+rezultat_3);
</script>
Пробовал reg_2 сделать так:
var reg_2 = new RegExp('(([^<]*)(<<<<<([^>]*)>>>>>)(?!([^<]*)<<<<<)([^>]*))','gi');
но не вышло. Как можно такое сделать?