JSFiddle - React, Tailwind, and code Playground

HTML

<textarea id="in" rows="10">{ abc }
{ a { bc } }
{ a {{}} }
{ abc {efg}{hij}}
{ a b cde }{aa}
{{}
} equal number of curly braces {
{ print "Went there {" } /* } { Dang edge cases! } */
{ a }//{b} commented out
{ "{" } { '}' }</textarea>
<textarea id="out" rows="10"></textarea>

CSS

textarea {
    width:100%;
}

JavaScript

var rows = document.getElementById('in').value.split('\n');
for (var n = 0; n < rows.length; n++) {

    var r = rows[n].replace(/(['"])(?:(?!\1|\\).|\\.)*\1|\/(?![*/])(?:[^\\/]|\\.)+\/[igm]*|\/\/[^\n]*(?:\n|$)|\/\*(?:[^*]|\*(?!\/))*\*\//gi, '');

    if (r.split('{').length != r.split('}').length || r.indexOf('}') < r.indexOf('{')) {
        document.getElementById('out').value += 'ERROR\t' + rows[n] + '\n';
        continue;
    }

    while (r.match(/\{[^}]*\{[^{}]*\}/))
        r = r.replace(/(\{[^}]*)\{[^{}]*\}/g, '$1');

    if (r.match(/\}.*\{/))
        document.getElementById('out').value += 'FALSE\t' + rows[n] + '\n';
    else
        document.getElementById('out').value += 'TRUE\t' + rows[n] + '\n';
}