Всем привет! Прошу помочь с regexp'ами.
Есть строка, содержащая такой HTML-код:
<li><i class="remove" title="Удалить"></i><span class="comment">Комментарий</span><img src="img/slider/b/5251.jpg"></li>
<li><i class="remove" title="Удалить"></i><span class="comment">Комментарий</span><img src="img/slider/b/6865.jpg"></li>
<li><i class="remove" title="Удалить"></i><span class="comment">Комментарий</span><img src="img/slider/b/7435.jpg"></li>
Мне необходимо изменить её на такую:
<td><p><img src="img/slider/b/5251.jpg"><i></i></p></td>
<td><p><img src="img/slider/b/6865.jpg"><i></i></p></td>
<td><p><img src="img/slider/b/7435.jpg"><i></i></p></td>
Для этого я применил регулярное выражение:
var path = /.*img\/slider\/b\/([^>]*)(\.png|\.gif|\.jpg).*/gm;
var newStr = oldStr.replace(path, '<td><p><img src="img/slider/b/$1$2"><i></i></p></td>');
И оно работает хорошо, пока не нарушается форматирование HTML-кода.
Но если HTML выстраивается в одну строку без переносов (у меня это происходит из-за сортировки картинок с помощью JQuery UI Sortable):
<li><i class="remove" title="Удалить"></i><span class="comment">Комментарий</span><img src="img/slider/b/5251.jpg"></li><li><i class="remove" title="Удалить"></i><span class="comment">Комментарий</span><img src="img/slider/b/6865.jpg"></li><li><i class="remove" title="Удалить"></i><span class="comment">Комментарий</span><img src="img/slider/b/7435.jpg"></li>
То совпадения тоже оказываются на одной строке, и жадные регулярки заменяют всю эту строку на один тег <td> с последней по счету картинкой:
<td><p><img src="img/slider/b/7435.jpg"><i></i></p></td>
Как можно заставить регулярку найти все совпадения, а не только последнее?