JSFiddle - React, Tailwind, and code Playground

HTML

<script type="text/plain" id="code">
var test = [
	"// Code",
	'// Code',
    "'// Code",
    '"// Code',
	//" Comment",
	//' Comment',
	/* Comment */
	// Comment /* Comment
    /* Comment
     Comment // */ "Code",
	"Code",
    "/* Code */",
    "/* Code",
    "Code */",
    '/* Code */',
    '/* Code',
    'Code */',
    /* Comment
    "Comment",
    Comment */ "Code",
    /Code\/*/,
    "Code */"
]
</script>
<div ng-app="" ng-controller="TestController as tc" ng-init="tc.test()">
    <textarea 
        ng-model="tc.regExpString" 
        ng-change="tc.test()"        
        placeholder="/your+regexp/g" 
        class="form-control"></textarea>
    <div class="alert alert-danger" ng-show="tc.error">{{tc.error.message}}</div>
    <div class="alert alert-warning" ng-show="!tc.pass">
        Expected Codes: {{tc.expectedResult.codes}}, Comments: {{tc.expectedResults.comments}}<br />
        Actual Codes: {{tc.actualResult.codes}}, Comments: {{tc.actualResult.comments}}
    </div>
    <div class="alert alert-success" ng-show="tc.pass">That works!!!</div>
    <div class="row">
        <div class="col-xs-6">
            Input:
            <pre>{{tc.code}}</pre>
        </div>
        <div class="col-xs-6">
            Output:
            <pre>{{tc.output}}</pre>
        </div>
    </div>
</div>

CSS

@import url('//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css');
textarea {
    font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
}

JavaScript

function TestController() {
    var tc = angular.extend(this, {
        code: code.innerText,
        regExp: /((["'])(?:\\[\s\S]|.)*?\2|\/(?![*\/])(?:\\.|\[(?:\\.|.)\]|.)*?\/)|\/\/.*?$|\/\*[\s\S]*?\*\//gm,
        output: '',
        error: '',
        expectedResult: {
            codes: 0,
            comments: 0
        },
        expectedResult: {
            codes: 0,
            comments: 0
        },
        test: test,
        pass: false,        
        calculateResult: calculateResult
    });

    function test() {
        tc.error = '';
        try {
            tc.expectedResult = calculateResult(tc.code.replace(/Comment/g, ''));
            var regexp = tc.regExp;
            if (!regexp || regexp.constructor != RegExp) 
                throw Error('Expression must result in an RegExp.');
            tc.output = tc.code.replace(regexp, '$1');
            tc.actualResult = calculateResult(tc.output);
            tc.pass = angular.toJson(tc.expectedResult) == angular.toJson(tc.actualResult);
        } catch (ex) {
            tc.error = ex;
        }
    }
    function calculateResult(text) {
        return {
            codes: text.split('Code').length - 1,
            comments: text.split('Comment').length - 1
        };
    }
}