我认为这是一个简单的问题。
我正在尝试使用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');
}
由于?
字符,这不起作用....我尝试用\
转义它,但这也不起作用。还有另一种方法可以使用?
字面而不是特殊字符吗?
答案 0 :(得分:122)
你需要用两个反斜杠来逃避它
\\?
有关详细信息,请参阅此处:
http://www.trans4mind.com/personal_development/JavaScript/Regular%20Expressions%20Simple%20Usage.htm
答案 1 :(得分:18)
你应该使用双斜杠:
var regex = new RegExp("\\?", "g");
为什么呢?因为在JavaScript中\
也用于转义字符串中的字符,所以:“\?”成为:"?"
"\\?"
成为"\?"
答案 2 :(得分:15)
您可以使用斜杠而不是引号来划分正则表达式,然后使用单个反斜杠来转义问号。试试这个:
var gent = /I like your Apartment. Could we schedule a viewing\?/g;
答案 3 :(得分:4)
每当你有一个已知的模式(即你没有使用变量来构建一个RegExp)时,使用 literal 正则表达式表示法,你只需要使用单个反斜杠来转义特殊的正则表达式元字符:
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");
在MDN必读:RegExp: Description。