en.javascript.info/10-regular-expressions-javascript/8-regexp-greedy-and-lazy/3-find-html-comments/solution.md
2015-03-23 10:49:30 +03:00

1.1 KiB
Raw Blame History

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

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

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

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

Итого:

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

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

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