Я пытаюсь построить регулярное выражение, чтобы удалить все комментарии из javascript-кода, как однострочные (// ...), так и многострочные (/*..*/). Это то, что я придумал:Strip комментарии от javascript-файла
/\"[^\"]*\"|'[^']*'|(\/\/.*$|\/\*[^\*]*\*\/)/mg
Описание: Как вы можете видеть, оно также ищет строковые литералы. Это связано с тем, что строковые литералы могут содержать контент, который в противном случае мог бы соответствовать шаблонам комментариев (например: location.href = "http://www.domain.com"; будет соответствовать одному комментарию строки). Поэтому я сначала помещаю строковые литералы в шаблоны альтернатив. Ниже приведены два шаблона, которые предназначены для улавливания одиночных комментариев и многострочных комментариев соответственно. Они заключены в одну группу захвата, так что я могу использовать string.replace (pattern, ""), чтобы удалить комментарии.
Я проверил выражение с паролем js-файлов и, похоже, работает. Мой вопрос в том, есть ли другие шаблоны, которые я должен искать, или если есть какие-то другие вещи, которые нужно рассмотреть (например, если в некоторых браузерах есть ограниченная поддержка регулярных выражений или альтернативной реализации, которые необходимо учитывать).
* "Я пытаюсь создайте регулярное выражение, чтобы удалить все комментарии из javascript-кода ». * Вы не можете, это не проблема, регулярные выражения могут решить сами по себе. Вы можете получить * закрыть *, но там ** будет ** ситуация, когда он пойдет не так, возможно, разрушительным способом (например, удалением кода). –
У вас есть примеры проблемных ситуаций, которые могут возникнуть? И любые предложения о том, что использовать в сочетании или вместо этого, чтобы разделить комментарии. – instantMartin
Я думаю, T.J. означает проблемы, которые могут быть вызваны '' ',' \ ''(не заканчивается строка),' \\ '(' \\' 'завершает строку,' \\\ ''не делает) , '' ... "... '' (здесь '' 'не начинается или не заканчивается строка) и все комбинации символов' '', '' 'и' \ '. Так что на самом деле для каждой строки один из них имеет сначала строки литералов синтаксического анализа (или, может быть, в то же время комментарии разбираются), а затем удаляет комментарии, которые на самом деле не являются частями строк. – YakovL