Синтаксис /…/
является синтаксисом буквального регулярного выражения . И регулярное выражение [\[]
описывает класс символов ([…]
), который является единственным символом [
). Таким образом, /[\[]/
является регулярным выражением, которое описывает один [
.
Но так как глобальный флаг не установлен (поэтому будет заменено только первое совпадение), все это можно заменить следующим (вероятно, легче читаемым):
name.replace("[", "\\[").replace("]","\\]")
Но если заменить все совпадения, я бы, вероятно, использовал это:
name.replace(/([[\]])/g, "\\$1")