I am trying to remove javascript ments (//
and /**/
) from sting with C#.
Does anyone have RegEx for it. I am reading list of javascript files then append them to string and trying to clean javascript code and make light to load. Bellow you will find one of the RegEx that works fine with /* */
ments but I need to remove //
ments too:
content = System.Text.RegularExpressions.Regex.Replace(content,
@"/\*[^/]*/",
string.Empty);
I am trying to remove javascript ments (//
and /**/
) from sting with C#.
Does anyone have RegEx for it. I am reading list of javascript files then append them to string and trying to clean javascript code and make light to load. Bellow you will find one of the RegEx that works fine with /* */
ments but I need to remove //
ments too:
content = System.Text.RegularExpressions.Regex.Replace(content,
@"/\*[^/]*/",
string.Empty);
Share
Improve this question
edited Feb 18, 2009 at 23:12
Pure.Krome
87k120 gold badges425 silver badges685 bronze badges
asked Jan 17, 2009 at 18:35
Artem GassanArtem Gassan
311 silver badge2 bronze badges
1
- why is your question all in italics? – Malfist Commented Jan 17, 2009 at 18:41
5 Answers
Reset to default 7You can't use a simple regex to remove ments from JS - at least not reliably. Imagine, for example, trying to process stuff like:
alert('string\' // not-a-ment '); // ment /* not-a-nested-ment
alert('not-a-ment'); // ment */* still-a-ment
alert('not-a-ment'); /* alert('mented-out-code');
// still-a-ment */ alert('not-a-ment');
var re= /\/* not-a-ment */; //* ment
var e4x= <x>// not-a-ment</x>;
You can make your regex work better than it does now by making it end on '*/' instead of just '/', and wrapping an or-clause around to it add the test for // up to the newline. But it'll never be bulletproof, because regex does not have the power to parse languages like JavaScript or [X]HTML.
If you want to minify Javascript files ("make it light to load"), why not try JSMin by Douglas Crockford? There is link to c# implementation at the bottom of the page (http://www.crockford./javascript/jsmin.cs)
An alternative to Regex can be the YUI Compressor for .Net, which can allow you to remove ments and minify JavaScript code.
// Note: string javaScript == some javascript data loaded from some file, etc.
pressedJavaScript= JavaScriptCompressor.Compress(javaScript);
I remend the program stripcmt:
StripCmt is a simple utility written in C to remove ments from C, C++, and Java source files. In the grand tradition of Unix text processing programs, it can function either as a FIFO (First In - First Out) filter or accept arguments on the mandline.
simple and robust, does the job flawlessly.
content = Regex.Replace(content,
"/\\*.*?\\*/",
String.Empty,
RegexOptions.Compiled | RegexOptions.Singleline);