JSFiddle - React, Tailwind, and code Playground

by Alexey Ukolov

JavaScript

function isValidBrackets(str, rrr = false) {
  var valid = false;

  str.split('').forEach(function(v, i, a) {
    if (v === ')') {
      var tmp = a.slice(0, i + 1);
      var x = tmp.join('').match(/\(/g).length;
      var y = tmp.join('').match(/\)/g).length;

      if (x === y) {
        a.splice(i, 1);
        a.splice(0, 1);

        if (a.length === 0) {
          valid = true;
          
          if (rrr) {
            console.log({v, i, tmp, x, y, a: JSON.parse(JSON.stringify(a)), valid});
          }

          return;
        }

        return isValidBrackets(a.join(''), true);
      }
    }
  });
  
  if (rrr) {
    console.log(valid);
  }

  return valid;
}

['()()', '(())', '())(', ')(', ')(()', '))((', '(', ')', ''].forEach(function (item) {
  console.log(item, isValidBrackets(item));
});