有变量
var str = "asdasd asd 123213 100 Feet";
我可以使用以下方法轻松提取字符串“100 Feet”
str.match(/(\d+) feet/gi);
制作:
100 Feet
但假设我想在变量中指定关键字“feet”并在我的正则表达式评估中使用它 - 所以我尝试使用如下所示的 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
参数应该包含不同标志的组合作为简单字符。
关于使用 RegExp 构造函数的具有可变模式的 JavaScript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061970/