js regexp - 要逃避角色,需要一个反斜杠?还是两个?

时间:2018-03-27 18:24:22

标签: javascript regex

当我需要一个和两个反斜杠\时,我无法理解。

首先,看一个例子:

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。

这真令人困惑。我无法做出正面或反面。

为什么他们不一样?我误解了吗?

1 个答案:

答案 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

所以如果你想检查是否存在'?'性格,你必须逃避它,因为它被用作' \?'此外,你必须使用' \?'

来逃避它

为什么会出现语法错误? 因为它期待检查某些内容是否存在,并且你没有给它任何东西。