JS Regexp-要逃脱角色,需要一个向后的斜线吗?或两个



我不明白何时需要一个和两个向后斜线

首先,请参见一个示例:

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

在上面的示例中,要使用字符/,它仅需要一个

但是, ?需要两个,或出现语法。

这确实令人困惑。我无法制作头或尾巴。

为什么它们与众不同?我误会了吗?

因为'?'被用来表示之前或不存在的内容如{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

因此,如果您想检查"?"的存在。角色,您必须逃脱它,并且由于它被用作" ?"另外,您必须使用'?'

逃脱它

为什么会给您语法错误?因为它期望某些东西检查它是否存在,并且您什么都不给它。

最新更新