Это не регулярное выражение, на которое он жалуется. Вы заменяете символы в строках замены, которые вообще не нуждаются в экранировании.
Символы [и] не имеют специального значения в обычной строке, вам не нужно их экранировать:
param = param.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");
Примечание. Как отметил Анон, вам не нужно использовать набор символов для одного символа:
param = param.replace(/\[/,"\\[").replace(/\]/,"\\]");
Вы также можете сопоставить оба символа в одном регулярном выражении, поймать то, что соответствует, и использовать при замене. Если вы хотите заменить больше, чем первое вхождение, вы хотите использовать глобальную опцию:
param = param.replace(/(\[|\])/g,"\\$1");