Я пытаюсь использовать это регулярное выражение (JS):Regex удалить многострочные комментарии
/\/\*(.*)\*\//g
Для замены
/*
sdandsads
*/
ни с чем.
Но это не работает! Зачем? о_О
Я пытаюсь использовать это регулярное выражение (JS):Regex удалить многострочные комментарии
/\/\*(.*)\*\//g
Для замены
/*
sdandsads
*/
ни с чем.
Но это не работает! Зачем? о_О
точка ловит все, за исключением переводов строк .. (если dotall ложно)
так либо использовать dotall (, как указано в других ответах/комментариев это не поддерживается в JavaScript, но я буду оставить его здесь для справки)
/\/\*(.*)\*\//gs
или добавить символы разметки \s
в выражениях
/\/\*((\s|.)*?)\*\//g
Алан отметил в своем комментарии плохой производительности ответ я дал так использовать следующие вместо .. (который переводит на все пробелы и все без пробелов, поэтому все ..)
/\/\*([\s\S]*?)\*\//g
Две проблемы:
[^]
.Решение:
/\/\*[^]*?\*\//g
Пример:
> '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
qqq
+1, изменено, чтобы не жадно .. –
Не работает с вложенными комментариями. Попробуйте: '/ * abc/* xyz */def/*'. Нежелательная природа делает его совпадением с первым комментарием первого комментария, а затем остается только «def
Никогда, ваши вложенные комментарии на самом деле не разрешены таким образом. Внутренняя оболочка будет нарушать внешнюю. – InfinitiesLoop
Там нет режима 's' (однострочного) в JavaScript, и' (. \ S |) 'суды катастрофических возвраты. Стандартный способ сопоставить что-нибудь, включая строки новой строки в JS, - '[\ S \ s]'. –
@alan, любые ссылки о '\ s | .' backtracking? хотел бы узнать об этом подробнее .. –
Эрик Корри объяснил это здесь: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8/2408599#2408599 Для более общей дискуссии о катастрофическом обратном следе , см. http://www.regular-expressions.info/catastrophic.html –