Javascript正则表达式测试失败
我对这个正则表达式有问题:Javascript正则表达式测试失败,javascript,regex,Javascript,Regex,我对这个正则表达式有问题: (\[|\])[0-9]+,([0-9]+(\[|\])|inf\])\s?.* 当我尝试编写代码时: var rangeRegex = new RegExp("(\[|\])[0-9]+,([0-9]+(\[|\])|inf\])\s?.*"); console.log(rangeRegex.test("]1,inf] Test Expression")); 我总是得到false。为什么?使用RegExp构造时,需要使用反斜杠进行双重转义: var rang
(\[|\])[0-9]+,([0-9]+(\[|\])|inf\])\s?.*
当我尝试编写代码时:
var rangeRegex = new RegExp("(\[|\])[0-9]+,([0-9]+(\[|\])|inf\])\s?.*");
console.log(rangeRegex.test("]1,inf] Test Expression"));
我总是得到
false
。为什么?使用RegExp
构造时,需要使用反斜杠进行双重转义:
var rangeRegex = new RegExp("(\\[|\\])[0-9]+,([0-9]+(\\[|\\])|inf\\])\\s?.*");
或者使用文字:
var rangeRegex = /(\[|\])[0-9]+,([0-9]+(\[|\])|inf\])\s?.*/;
您使用
RegExp
构造函数而不是文本的任何原因?我敢肯定,如果你使用构造函数,你必须避开反斜杠。或者,如果你使用字面形式,它应该起作用,因为它不是那么重要,而是应该是“逃避你的反斜杠”,而不是“双重逃避”?如果你是双重逃避一个反斜杠,将有3个反斜杠。也许我错了。这很奇怪,因为“转义”意味着使用反斜杠…在这种情况下,使用反斜杠character@Ian哎呀。漏掉了一个字。现在修正:)@Jerry啊,我明白了,我明白了,这听起来比我建议的还要好!需要明确的是,这与RegExp
函数本身无关,而是与传递给它的字符串文字有关,它本身使用``字符作为自己的转义符。