Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вырезать все комментарии <!-- ... --> регуляркой (https://javascript.ru/forum/misc/44627-kak-vyrezat-vse-kommentarii-regulyarkojj.html)

schtromm 27.01.2014 11:58

Как вырезать все комментарии <!-- ... --> регуляркой
 
Всех приветствую.

Возникла проблема с написанием регулярного выражения на Javascript.

Есть некий HTML-код, в котором встречаются комментарии в формате <!-- ... -->. Необходимо вырезать все эти комментарии.

К сожалению, мой опыт в PHP не помог - регулярные выражения на Javascript совсем другие. Чтение документации толку тоже не дало, там написано все каким-то нечеловеческим языком. Во всяком случае, я так и не смог понять, как описать регулярное выражение, берущее любой текст между такими-то и такими-то фрагментами. Простейшая конструкция, на PHP описывается выражением ".*?". На Javascript не смог сделать.

В результате экспериментов у меня нарисовалась такая конструкция:
d = d.replace(/<!--[^]*-->/g,'');

Но она заменяет весь текст от первого открывающего "<!--" до последнего закрывающего "-->". То есть, по сути удаляет вообще все. А мне надо, чтобы заменяло от первого открывающего "<!--" до ближайшего закрывающего "-->".

Прошу помочь.
Спасибо.

рони 27.01.2014 12:35

schtromm,
Особенности регулярных выражений в Javascript
Жадность

schtromm 27.01.2014 12:48

Ага, спасибо, сейчас изучу.
Скажите плз, а вот это "[^]*" - он правильно описывает нужную задачу, то есть вообще любой текст с переносами?

рони 27.01.2014 12:58

schtromm,
var reg = /<!--([\s\S]*?)-->/mig

danik.js 27.01.2014 13:25

schtromm, можешь в Sublime Text или Notepad++ замену произвести. В этих редакторах есть поддержка регулярок. Я правильно понял что тебе по исходнику нужно пройтись с заменой?

schtromm 27.01.2014 14:14

Цитата:

Сообщение от рони (Сообщение 294317)
schtromm,
var reg = /<!--([\s\S]*?)-->/mig

Урр-ра, заработало! :thanks:

Большое спасибо, рони.

schtromm 27.01.2014 14:17

Цитата:

Сообщение от danik.js (Сообщение 294326)
schtromm, можешь в Sublime Text или Notepad++ замену произвести. В этих редакторах есть поддержка регулярок. Я правильно понял что тебе по исходнику нужно пройтись с заменой?

Нет, это для скрипта чистки HTML от вордовского мусора. Скрипт я нашел, везде работает нормально, но Firefox при вставке из Word добавляет свой мусор в виде комментариев, которые дополнительно надо чистить. Вот, собственно, эта строка для этого и нужна.


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