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