当我需要一个和两个反斜杠\
时,我无法理解。
首先,看一个例子:
const rxHttps = new RegExp("\/");
console.log(rxHttps.test("/")); // true
const rxQuestion = new RegExp("\\?");
console.log(rxQuestion.test("?")); // true
const rxAnotherQuestion = new RegExp("\?"); // Uncaught SyntaxError: Invalid regular expression: /?/: Nothing to repeat
在上面的例子中,使用字符/
,只需要一个\
。
但是, ?
需要两个\
,或者发生SyntaxError。
这真令人困惑。我无法做出正面或反面。
为什么他们不一样?我误解了吗?
答案 0 :(得分:0)
因为'?'用于表示它之前可能存在或不存在的内容,如{0,}
例如
var reg = new RegExp('a?');
// this has the same meaning as using
// var reg = new RegExp('a\?');
reg.test('a'); // will display true
reg.test('anything'); // this will also display true
reg.test('123'); // this also displays true
所以如果你想检查是否存在'?'性格,你必须逃避它,因为它被用作' \?'此外,你必须使用' \?'
来逃避它为什么会出现语法错误? 因为它期待检查某些内容是否存在,并且你没有给它任何东西。