Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式测试失败_Javascript_Regex - Fatal编程技术网

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
函数本身无关,而是与传递给它的字符串文字有关,它本身使用``字符作为自己的转义符。