Спецсимволы-исключения внутри квадратных скобок

Вы уже знаете, что спецсимволы внутри [ ] становятся обычными символами. Есть, однако, исключения: если вам нужны квадратные скобки как символы внутри [ ] - то их нужно экранировать обратным слешем.

Для примера в следующем коде шаблон поиска выглядит так: между иксами стоит квадратная скобка:

let str = 'x]x xax x[x x1x'; let res = str.replace(/x[\[\]]x/g, '!');

В результате в res запишется следующее:

'! xax ! x1x'

Дана строка:

let str = 'x[]z x{}z x.z x()z';

Напишите регулярку, которая найдет все слова по шаблону: буква 'x', затем любое количество любых скобок, затем буква 'z'.

Дана строка:

let str = '[abc] {abc} abc (abc) [abc]';

Напишите регулярку, которая найдет строки в любых скобках и заменят их на '!'.