在正则expression式中转义问号

这是一个简单的问题,我认为。

我想在JavaScript中使用正则expression式search另一个string中的string的发生,如下所示:

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中\也用于转义string中的字符,所以:“\?” 变成: "?"

"\\?" ,变成"\?"

你可以使用斜线而不是引号分隔正则expression式,然后用一个反斜杠来转义问号。 尝试这个:

 var gent = /I like your Apartment. Could we schedule a viewing\?/g; 

每当你有一个已知的模式(即你不使用一个variables来build立一个RegExp),使用文字正则expression式符号,你只需要使用单个反斜杠来转义特殊的正则expression式元字符:

 var re = /I like your Apartment\. Could we schedule a viewing\?/g; ^^ ^^ 

无论何时您需要dynamic构buildRegExp,请使用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处的说明