[英]escaping question mark in regex javascript
这是我认为的一个简单问题。
我正在尝试使用 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");
如果您使用String.raw
字符串文字,您可以按原样使用\\
(请参阅使用模板字符串文字的示例,您可以在其中将变量放入正则表达式模式中):
const questionmark_block = String.raw`\\?`; // A literal ? const initial_subpattern = "I like your Apartment\\\\. Could we schedule a viewing"; const re = new RegExp(`${initial_subpattern}${questionmark_block}`, 'g'); // Building pattern from two variables console.log(re); // => /I like your Apartment\\. Could we schedule a viewing\\?/g
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.