Функции в других ответах являются излишними для экранирования всех регулярных выражений (они могут быть полезны для экранирования частей регулярных выражений, которые позже будут объединены в большие регулярные выражения).
Если вы избегаете всего регулярного выражения и выполняетесь с ним, цитируя метасимволы, которые являются автономными (.
, ?
, +
, *
, ^
, $
, |
, \
) или начать что-то ((
, [
, {
) - это все, что вам нужно:
String.prototype.regexEscape = function regexEscape() {
return this.replace(/[.?+*^$|({[\\]/g, '\\$&');
};
И да, неутешительно, что JavaScript не имеет такой функции, как эта встроенная -в.