Exceções dentro de conjuntos em expressões regulares JavaScript

Você já sabe que caracteres especiais dentro de [] tornam-se caracteres comuns. Existem, no entanto, exceções: se você precisar de colchetes como caracteres dentro de [ ] - então eles precisam ser escapados com uma barra invertida. Por exemplo, no código a seguir, o padrão de busca é assim: entre os x's há um colchete:

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

Como resultado, o seguinte será armazenado na variável:

javascript'! xax ! x1x'
Задание 1

Dada a string:

javascriptlet str = 'x[]z x[[]]z x()z';

Escreva uma expressão regular que encontre todas as palavras seguindo o padrão: letra 'x', depois colchetes qualquer número de vezes, depois letra 'z'.

Задание 2

Dada a string:

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

Escreva uma expressão regular que encontre todas as palavras seguindo o padrão: letra 'x', depois qualquer número de qualquer tipo de colchetes, depois letra 'z'.