JSFiddle - React, Tailwind, and code Playground

JavaScript

function escape(str) {
  return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\\\$&');
}

function replace(str, needle, replacement) {
  var expr = '([^\\[]*)(' +
			escape(needle) + ')([^\\]]*)';
  return str.replace(new RegExp(expr, 'g'), '$1' + replacement + '$3');
}

document.body.innerHTML += replace('hello() [hello()] test()', '()', '@');