Я предполагаю, что вам действительно нужно что-то, что удалит или обработает правильно вложенные комментарии из строки, даже если их больше одного - ответы, дающие «жадные» регулярные выражения, будут идти от первых /*
кпоследний */
: в таких строках, как keep /* comment */ keep /* comment */ keep
, они будут обрабатывать середину keep
как часть комментария.
Короткий ответ: Javascript RegExps недостаточно мощен, чтобы сделать это, вам нужнорекурсивные паттерны.(Также известный как регулярные выражения не могут считать ).
Но, если вы просто хотите удалить комментарии, вы можете сначала использовать цикл и удалить самые внутренние комментарии (используя неgreedy RegExp из @mVChr, измененный, чтобы соответствовать последнему возможному начальному разделителю вместо первого):
var re = /(.*)\/\*.*?\*\//; while (re.test(string)) string.replace(re, '$1')
Это перемещает подсчет (уровней вложенности) из регулярного выражения и, так сказать, в цикл,(Я не поставил флаг g
в регулярном выражении, потому что я не уверен в побочных эффектах при использовании такого регулярного выражения в двух местах цикла. И цикл все равно заботится о нахождении всех вхождений).