使用C#从字符串中删除JavaScript注释

Art*_*san 3 javascript c#

我试图从使用C#的sting中删除javascript注释(///**/).有人有RegEx吗?我正在阅读javascript文件列表,然后将它们附加到字符串并尝试清理javascript代码并轻松加载.Bellow你会发现其中一个RegEx可以正常/* */评论,但我也需要删除//评论:

content = System.Text.RegularExpressions.Regex.Replace(content,
    @"/\*[^/]*/", 
    string.Empty);
Run Code Online (Sandbox Code Playgroud)

Mar*_*mic 7

如果你想缩小Javascript文件("轻松加载"),为什么不试试Douglas Crockford的JSMin呢?页面底部有链接到c#实现(http://www.crockford.com/javascript/jsmin.cs)


bob*_*nce 7

您不能使用简单的正则表达式从JS中删除注释 - 至少不可靠.想象一下,例如,试图处理像:

alert('string\' // not-a-comment '); // comment /* not-a-nested-comment
alert('not-a-comment'); // comment */* still-a-comment
alert('not-a-comment'); /* alert('commented-out-code');
// still-a-comment */ alert('not-a-comment');
var re= /\/* not-a-comment */; //* comment
var e4x= <x>// not-a-comment</x>;
Run Code Online (Sandbox Code Playgroud)

你可以使你的正则表达式比现在更好地工作,使它以'*/'而不仅仅是'/'结束,并且在它周围包装一个or-clause,将//添加到新行的测试.但它永远不会是防弹的,因为正则表达式无法解析JavaScript或[X] HTML等语言.


CMS*_*CMS 5

Regex的替代品可以是.NetYUI Compressor,它可以让您删除注释并缩小JavaScript代码.

// Note: string javaScript == some javascript data loaded from some file, etc.
compressedJavaScript= JavaScriptCompressor.Compress(javaScript); 
Run Code Online (Sandbox Code Playgroud)