我不明白何时需要一个和两个向后斜线。
首先,请参见一个示例:
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
因此,如果您想检查"?"的存在。角色,您必须逃脱它,并且由于它被用作" ?"另外,您必须使用'?'
逃脱它为什么会给您语法错误?因为它期望某些东西检查它是否存在,并且您什么都不给它。