在正则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处的说明 。