我在里面用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);
说真的,我不明白为什么它没有给我回复“n°14- \ n DCC-71 du du 2014年4月”。我在http://jsregex.com/上测试了这个正则表达式并且它有效,所以也许这是nodejs的奇怪行为。
答案 0 :(得分:4)
string literal中的\
必须转发为\\
。
这就是为什么你不应该使用字符串从常量表达式创建正则表达式的原因之一。
var decRegexp = /[0-9]{2}-(\\n)*\s*[A-Z]{1,3}-(\\n)?\s*[0-9]{2,3}/g;
(另一个原因是你用正则表达式文字得到了更好的表现)
答案 1 :(得分:0)
RegExp
对象要求您双重转义转义序列,因此请使用:
var decRegexp = new RegExp("[0-9]{2}-(\\n)*\\s*[A-Z]{1,3}-(\\n)?\\s*[0-9]{2,3}", "g");