JSFiddle - React, Tailwind, and code Playground

JavaScript

'use strict';

var Bracket = (function(){

    var bracketDict = {
        "{": "}",
        "(": ")",
        "[": "]"
    };

    var validate = function(str) {
        var openingBracket = null;
        if ( typeof str !== 'string' || str.length == 1 ) return false;
        for ( var i = 0; i < str.length; i++ ) {
            var currentBracket = str[i];
            if ( openingBracket != null ) {
                if ( currentBracket === openingBracket ) {
                    openingBracket = null;
                } else if ( currentBracket === " " ) {
                    continue;
                } else {
                    return false;
                }
            } else {
                if ( bracketDict[currentBracket] ) {
                    openingBracket = bracketDict[currentBracket];
                } else if ( currentBracket === " " ) {
                    continue;
                } else {
                    return false;
                }
            }
        }
        if ( openingBracket ) {
            return false;
        } else {
            return true;
        }
    }

    return {
        validate: validate
    };

})();

console.log(Bracket.validate(""));         // true
console.log(Bracket.validate("()"));       // true
console.log(Bracket.validate("()[]"));     // true
console.log(Bracket.validate("()[]{}"));   // true
console.log(Bracket.validate("()[]{}"));   // true
console.log(Bracket.validate("[ ]"));      // true
console.log(Bracket.validate("{{[]()}}")); // false
console.log(Bracket.validate("([)]"));     // false
console.log(Bracket.validate("]]"));       // false
console.log(Bracket.validate("["));        // false
console.log(Bracket.validate({}));         // false