【发布时间】:2018-03-31 15:07:32
【问题描述】:
我知道这个问题的变体已经被问过很多次,但我发现的其他解决方案都没有对我有用。
我只是想提出一个正则表达式来删除可能出现在某些 javascript 中的任何单行 cmets。
理想情况下,它应该有某种方法来检查两个正斜杠是否不是任何实际脚本的一部分。
$("a[href='#top']").click(function() { // This should be removed
$('html, body').animate({
scrollTop:0
}, 'slow');
return false;
});
var SomeURL = 'http://www.google.com'; // This comment should be removed but the URL should not
我有这个:
$fileContents = preg_replace('/\/\/.*/', '', $fileContents);
...但这会破坏我的代码,因为它会删除 URL 以及单行 cmets
【问题讨论】:
-
这对于正则表达式来说会很痛苦,因为您正在搜索上下文敏感模式。 E.G
var a = '// some string'不应该被删除,但var a = 'some string' // comment here应该被删除。 -
here 中提出的解决方案似乎有效!
-
@bassxzero 我想如果正则表达式只是检查
//之后是否存在分号以忽略它。我就是不知道怎么写。 -
@JROB 没那么简单。
var a= 'blah';var b='blah blah'; // comment \n可以出现在一行上并且在语法上是有效的。这更像是解析器的工作。 -
然后您将捕获超过一行的 URL。它并没有你想象的那么简单,并且不能用正则表达式可靠地完成。
标签: php