Ответ 1
Вам нужно сбежать с двумя обратными косыми чертами
\\?
См. это для более подробной информации:
http://www.trans4mind.com/personal_development/JavaScript/Regular%20Expressions%20Simple%20Usage.htm
Это простой вопрос, который я думаю.
Я пытаюсь найти появление строки в другой строке, используя regex в JavaScript, например:
var content ="Hi, I like your Apartment. Could we schedule a viewing? My phone number is: ";
var gent = new RegExp("I like your Apartment. Could we schedule a viewing? My", "g");
if(content.search(gent) != -1){
alert('worked');
}
Это не работает из-за символа ?
.... Я попытался выполнить его с помощью \
, но это тоже не сработает. Есть ли другой способ использовать ?
буквально вместо специального символа?
Вам нужно сбежать с двумя обратными косыми чертами
\\?
См. это для более подробной информации:
http://www.trans4mind.com/personal_development/JavaScript/Regular%20Expressions%20Simple%20Usage.htm
Вы должны использовать двойную косую черту:
var regex = new RegExp("\\?", "g");
Почему? потому что в JavaScript \
также используется для удаления символов в строках, поэтому: "\?" становится: "?"
И "\\?"
, становится "\?"
Вы можете разграничить ваше регулярное выражение с помощью косой черты вместо кавычек, а затем одну обратную косую черту, чтобы избежать вопросительного знака. Попробуйте следующее:
var gent = /I like your Apartment. Could we schedule a viewing\?/g;
Всякий раз, когда у вас есть известный шаблон (т.е. вы не используете переменную для создания RegExp), используйте литерал с регулярным выражением, где вам нужно использовать одиночные обратные черты для исключения специальных метасимволов регулярных выражений:
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.