具有变量

var str = "asdasd asd 123213 100 Feet";




我可以轻松地使用提取字符串“ 100 Feet”

str.match(/(\d+) feet/gi);


生产:

100 Feet


但是,假设我要在变量中指定关键字“ feet”,并在我的regex评估中使用它-因此,我尝试使用RegExp构造函数,如下所示:

var keyWord = 'feet';
var pattern = '(\\d+) ' + keyWord;
//pattern evaluates into '(\d+) feet', seemingly equivalent to the pattern shown above

var regex = new RegExp(pattern, 'g', 'i');
var result = str.match(regex);




但是,由于某种原因,该字符串与字符串不匹配。任何人都可以对此有所了解吗?

最佳答案

发生这种情况是因为没有应用ignore case标志。应该:

var regex = new RegExp(pattern, 'gi');


RegExp构造函数没有第三个参数,并且flag参数应由不同标志的组合组成,如简单字符。

10-06 07:32