Вместо того, чтобы избегать символов, которые могут вызвать проблемы в вашем регулярном выражении (например, черный список), почему бы вам не использовать вместо этого белый список. Таким образом, каждый символ считается испорченным, если он не соответствует.
В этом примере предположим следующее выражение:
RegExp.escape('be || ! be');
Это белый список букв, цифр и пробелов:
RegExp.escape = function (string) {
return string.replace(/([^\w\d\s])/gi, '\\$1');
}
Возвраты:
"be \|\| \! be"
Это может привести к тому, что символы не должны быть экранированы, но это не мешает вашему выражению (может быть, некоторые незначительные штрафные санкции), но это того стоит ).