Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена html элементов - регулярка (https://javascript.ru/forum/misc/48278-zamena-html-ehlementov-regulyarka.html)

r3l0c 27.06.2014 14:50

Замена html элементов - регулярка
 
В общем есть к примеру такой текст:
ололо лол <img src="/a/b/c/../lold.gif"> ку-ку <img src="/a/b/c/../lold3333.gif">  123333

Надо получить "ололо лол :!lold:! ку-ку :!lold3333!: 123333"
Запилил регулярку
var re = new RegExp('(<img(.*src="[^"]*/(.*?)\.gif")>)', 'gim');
        text = text.replace(re, ":!$3!:");

Но работает неверно - все потирает и возвращает последнюю замену.

Далее надо обратно спарсить "ололо лол :!lold:! ку-ку :!lold3333!: 123333" в исходный текст с img, есть регулярка
var re = new RegExp("(:!(.*)!:)", "i");
text = text.replace(re, "<img src=\"$2.gif\">");

Но она тоже косячит--
<img src="/шьп/image3!: ололо :!image5.gif">

Помогите, я уже вторые сутки маюсь%)

r3l0c 27.06.2014 19:29

Ребята, выручайте), я просто дальше бессилен)

Aetae 27.06.2014 19:45

'ололо лол <img src="/a/b/c/../lold.gif"> ку-ку <img src="/a/b/c/../lold3333.gif">  123333'
.replace(/<img.*?src=".*?([^/.]+).gif".*?>(.*?)<img.*?src=".*?(\1.*?).gif".*?>/, ':!$1!:$2:!$3!:')

'ололо лол :!lold!: ку-ку :!lold3333!:  123333'
.replace(/:!(.*?)!:/g, '<img src="/a/b/c/../$1.gif">')

r3l0c 27.06.2014 20:11

Aetae,
Спасибо, подкинул идею. В итоге запилил так
var re = new RegExp('(.*)(<img(.*src="[^"]*/(.*?)\.gif")>)(.*)', 'i');

        do {
            text = text.replace(re, '$1 :!$4:! $5');
        } while (text.search(re) !== -1);
        return text;

Работает как надо. Второй вариант попробовал запилить аналогично--не форцает. Не могу понять где ошибка.
var re = new RegExp("(.*):!(.*?)!:(.*)", "i");
        do {
            text = text.replace(re, "$1<img src=\"$2.gif\">$3");
        } while (text.search(re) !== -1);

r3l0c 27.06.2014 20:13

Все. Сделал, просто апечатка в первом варинате была. Спасибо


Часовой пояс GMT +3, время: 16:57.