Javascript: удалить все комментарии из текста программы
Цель очень простая - удалить все Си-подобные строчные (inline)
// строчный комментарий, действует до перевода строки
и блочные
/* блочный или многострочный комментарий */
комментарии из некоторого текста.
Попробовал нацарапать несколько регулярок, кажется, показанная ниже работает (функция stripComments
).
Предполагается кодировка Юникода utf-8.
А может, есть вариант и получше?
<h3>Data:</h3> <pre id="stringData">/** * Комменты * longer comments here that we can parse. * * blah-blah-blah */ function subroutine() { a = /* inline comment */ b + c ; } /*/ <-- хитрый комментарий */ /** * Another comment. */ function something() { //Строчный комментарий } var a=1; //Ещё строчный комментарий </pre> <h3>Result:</h3> <pre id="stringResult"></pre> <script> function stripComments(s) { return s.replace(/\/\*[\s\S]*?\*\/|([^:]|^)\/\/.*$/igm, ''); } var txt = document.getElementById('stringData').innerHTML; document.getElementById('stringResult').innerHTML = stripComments(txt); </script>
Здесь просто берутся данные из элемента stringData
и результат пишется в элемент stringResult
. Вот что вышло:
Data: /** * Комменты * longer comments here that we can parse. * * blah-blah-blah */ function subroutine() { a = /* inline comment */ b + c ; } /*/ <-- хитрый комментарий */ /** * Another comment. */ function something() { //Строчный комментарий } var a=1; //Ещё строчный комментарий Result: function subroutine() { a = b + c ; } function something() { } var a=1;
Напомню, что в норме вложенные многострочные комментарии не разрешены, так что этот случай регулярка обрабатывать не обязана :)
03.10.2019, 12:38 [2457 просмотров]