Всякий раз, когда у вас есть известный шаблон (т. Е. Вы не используете переменную для построения RegExp), используйте литерал регулярное выражение, где вам нужно использовать только single обратные косые черты для экранирования специальных метасимволов регулярных выражений:
var re = /I like your Apartment\. Could we schedule a viewing\?/g;
^^ ^^
Всякий раз, когда вам нужно построить RegExp динамически, используйте RegExp
запись конструктора , где вы ДОЛЖНЫ удвоить обратную косую черту, чтобы обозначить буквальную обратную косую черту :
var questionmark_block = "\\?"; // A literal ?
var initial_subpattern = "I like your Apartment\\. Could we schedule a viewing"; // Note the dot must also be escaped to match a literal dot
var re = new RegExp(initial_subpattern + questionmark_block, "g");
Обязательно читать: RegExp: Описание в MDN.