You're right. Quoted from
man.txt:
"All non-alphameric characters other than \, -, ^ (at the
start) and the terminating ] are non-special in character
classes, but it does no harm if they are escaped."
According to that, we'll still have to escape the \] char, but the others may appear unescaped: /([.\][(){}+*?])/g.