【问题标题】:How do I remove ONLY JavaScript comments that start with "// "?如何仅删除以“//”开头的 JavaScript 注释?
【发布时间】:2015-12-04 10:31:26
【问题描述】:

首先要澄清的是,我已经有一个可以成功压缩其他所有内容的压缩工具,因此我不需要冗长复​​杂的preg_replace 正则表达式,只需一个简单的preg_replacestr_replace 规则即可。

我只想删除以“//”开头的 JavaScript cmets(包括空格,因此我不会删除 URL),直到新行。而已!再一次,我不需要替换 /* */ 或任何其他变体,因为我有一个已经这样做的脚本;唯一缺少的是这个功能,所以我想先用这个清理输入,然后将其交给脚本。

以下是我要删除的 cmets 示例的屏幕截图:

非常感谢您对此的帮助! :-) 谢谢!

【问题讨论】:

标签: javascript php regex comments


【解决方案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】:

我会使用带有多行 modifierm 的正则表达式,

/^\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/…
猜你喜欢
  • 2014-11-30
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
相关资源
最近更新 更多