en.javascript.info/10-regular-expressions-javascript/07-regexp-greedy-and-lazy/3-find-html-comments/solution.md
Ilya Kantor e2443e8de6 ok
2017-03-19 16:59:53 +03:00

980 B
Raw Blame History

Нужно найти начало комментария match:<!--, затем всё до конца match:-->.

С первого взгляда кажется, что это сделает регулярное выражение pattern:<!--.*?--> -- квантификатор сделан ленивым, чтобы остановился, достигнув match:-->.

Однако, точка в JavaScript -- любой символ, кроме конца строки. Поэтому такой регэксп не найдёт многострочный комментарий.

Всё получится, если вместо точки использовать полностю "всеядный" pattern:[\s\S].

Итого:

var re = /<!--[\s\S]*?-->/g;

var str = '.. <!-- Мой -- комментарий \n тест --> ..  <!----> .. ';

alert( str.match(re) ); // '<!-- Мой -- комментарий \n тест -->', '<!---->'