Javascript 奇怪的是,Regexp不工作

Javascript 奇怪的是,Regexp不工作,javascript,regex,string,node.js,Javascript,Regex,String,Node.js,我使用内部的regexp测试了以下代码,控制台日志打印为null。代码如下: var decRegexp = new RegExp("[0-9]{2}-(\\n)*\s*[A-Z]{1,3}-(\\n)?\s*[0-9]{2,3}", "g"); var textToTest = "n° 14-\n DCC-71 du du 4 juin 2014" var decisionNumberMatches = textToTest.match(decRegexp); console.log

我使用内部的regexp测试了以下代码,控制台日志打印为null。代码如下:

var decRegexp = new RegExp("[0-9]{2}-(\\n)*\s*[A-Z]{1,3}-(\\n)?\s*[0-9]{2,3}", "g");
var textToTest = "n° 14-\n      DCC-71 du du 4 juin 2014"
var decisionNumberMatches = textToTest.match(decRegexp);
console.log(decisionNumberMatches);

说真的,我不明白为什么它不给我回“2014年14号-\n DCC-71杜杜4号”。我在上测试了这个regexp,它可以工作,所以可能是nodejs的一种奇怪行为。

regexp
对象要求您双重转义转义序列,因此请使用:

var decRegexp = new RegExp("[0-9]{2}-(\\n)*\\s*[A-Z]{1,3}-(\\n)?\\s*[0-9]{2,3}", "g");

RegExp
对象要求您双重转义转义序列,因此请使用:

var decRegexp = new RegExp("[0-9]{2}-(\\n)*\\s*[A-Z]{1,3}-(\\n)?\\s*[0-9]{2,3}", "g");
A中的
\
必须作为
\
转义

这就是为什么不应该使用字符串从常量表达式创建regexp的原因之一

使用:

(另一个原因是使用regex文本可以获得更好的性能)

A中的
\
必须作为
\
转义

这就是为什么不应该使用字符串从常量表达式创建regexp的原因之一

使用:


(另一个原因是使用正则表达式文字可以获得更好的性能)

实际上是传递到RegExp构造函数的字符串需要反斜杠转义是的,这就是我的意思。实际上是传递到RegExp构造函数的字符串需要反斜杠转义是的,这就是我的意思。