Excepciones dentro de conjuntos en expresiones regulares de JavaScript

Ya sabes que los caracteres especiales dentro de [] se convierten en caracteres ordinarios. Sin embargo, hay excepciones: si necesitas corchetes como símbolos dentro de [ ], entonces debes escaparlos con una barra invertida. Por ejemplo, en el siguiente código, el patrón de búsqueda se ve así: entre equis hay un corchete:

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

Como resultado, se guardará lo siguiente en la variable:

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

Dada la cadena:

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

Escribe una expresión regular que encuentre todas las palabras según el patrón: letra 'x', luego corchetes cualquier número de veces, luego letra 'z'.

Задание 2

Dada la cadena:

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

Escribe una expresión regular que encuentre todas las palabras según el patrón: letra 'x', luego cualquier número de cualquier tipo de paréntesis, luego letra 'z'.