如何仅删除以“//”开头的 JavaScript 注释?
Posted
技术标签:
【中文标题】如何仅删除以“//”开头的 JavaScript 注释?【英文标题】:How do I remove ONLY JavaScript comments that start with "// "? 【发布时间】:2015-12-04 10:31:26 【问题描述】:首先要澄清的是,我已经有一个可以成功压缩其他所有内容的压缩工具,因此我不需要冗长复杂的preg_replace
正则表达式,只需一个简单的preg_replace
或str_replace
规则即可。
我只想删除以“//”开头的 javascript cmets(包括空格,因此我不会删除 URL),直到新行。而已!再一次,我不需要替换 /* */ 或任何其他变体,因为我有一个已经这样做的脚本;唯一缺少的是这个功能,所以我想先用这个清理输入,然后将其交给脚本。
以下是我要删除的 cmets 示例的屏幕截图:
非常感谢您对此的帮助! :-) 谢谢!
【问题讨论】:
meta.***.com/q/303812/4227915 使用 php 还是 JavaScript? ***.com/questions/5989315/… 但似乎更容易使用已经编写的...希望您有一个带有 url 的字符串的测试,以确保您不会删除它。 用正则表达式来做这件事并不是一件容易的事,特别是因为//
可以在字符串中。
你可以试试regex101.com/r/cQ0dL8/1
【参考方案1】:
试试这个代码:
$re = "~\\n? */2, .*~";
$str = "text\n\n/*\ntext\n*\n //example1\n //example2\n\ntext\n\n// example 3";
$subst = "";
$result = preg_replace($re, $subst, $str);
正则表达式匹配两个或多个/
,后跟您在问题中提出的空格。当您替换它时,它将删除整行或直到空格和换行符
Demo
【讨论】:
如果您使用除 / 以外的分隔符作为您的表达式,则不必转义分隔符,例如'~// .*$~'
将匹配斜线 斜线空格后跟任何内容到行尾。
太棒了!我尝试了这个建议,它删除了几乎所有内容,只在 html 中留下以下内容:
我不想用空白替换文本,我想删除整行。希望对您有所帮助...
@Kevin,很抱歉,我忘记了网址。我现在用正确的正则表达式更新了答案。
嘿佩德罗,好的去试试,让你知道【参考方案2】:
我会使用带有多行 modifier、m
的正则表达式,
/^\h*\/\/.*$/m
这将找到以//
开头的任何行,而不管它前面的空格是什么。第一个 //
之后的所有内容都将被删除,直到该行结束。
Regex101 演示:https://regex101.com/r/tN7nW9/2
您应该在将来将您的数据作为字符串(而不是图像)包含在内,以便用户可以对其进行测试。
PHP 用法:
echo preg_replace('/^\h*\/\/.*$/m', '', $string);
PHP 演示:https://eval.in/430182
【讨论】:
嗯,你和其他人的结果略有不同。你能告诉我 THIS ~\\n 有什么区别吗? */2, .*~ 还有这个 /^\h*\/\/.*$/m 这看起来像是一个可选的新行,任意数量的空格,直到两个或更多/
字符,然后是任何内容。这可能很危险。我的正则表达式逐行进行,需要行开始//
(无论空格如何),如果是这样,则将整行替换为空。同样,如果您包含实际数据,这会容易得多,只需使用表达式运行 regex101。
这两个答案对你有用吗@Kevin? meta.stackexchange.com/questions/5234/…以上是关于如何仅删除以“//”开头的 JavaScript 注释?的主要内容,如果未能解决你的问题,请参考以下文章