I was chatting with some others on the CB yesterday about ways to detect the following in a JS file:
var myObject = { foo: 'foo', bar: 'bar', //baz: 'baz' };
While Firefox blissfully ignores that extra comma, IE and Chrome treat it as if there's a null element after it which can cause problems that are difficult to debug. After many iterations, I came up with the following substitution:
s#^((?:[^/\n]|/(?!/))*),((?:\s*|//.*$|/\*(?:[^*]|\*(?!/))*\*/)*\s*[}\] +])#$1$2#mg
To decode: It detects any comma that does not follow a // on the same line, and searches for a closing ] or } with any amount of whitespace or comments inbetween. It's not ridiculously fast but it gets the job done. This operates on a string that contains the whole file, line breaks and all. It's not perfect... it sometimes detects false positives (for instance, the character class \w,) and it may also behave strangely on strings containing anything comment-like. That's why I wrote a detection script that can be run before the one that fixes it. I've uploaded my code to a SourceForge project: https://sourceforge.net/projects/jscommas/

In reply to Detecting Dangling Commas in JavaScript by wink

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.