Regexp奇怪地不起作用

Regexp strangely not working

本文关键字:不起作用 Regexp      更新时间:2023-09-26

我使用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年7月4日DCC-71号"。我在上测试了这个正则表达式http://jsregex.com/而且它是有效的,所以这可能是nodejs的一种奇怪行为。

字符串文字中的'必须转义为''

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

使用正则表达式文字:

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

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

RegExp对象需要对转义序列进行双重转义,因此请使用:

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