使用 RegExp 构造函数的具有可变模式的 JavaScript 正则表达式

标签 javascript regex

有变量

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/

相关文章:

regex - 在 MATLAB 中检查 UTF-8 字母是否为元音字母

regex - 如何使用正则表达式搜索双引号包围的文本?

javascript - AngularJS 将属性绑定(bind)到组件中的对象

javascript - Electron 多窗口通信

javascript - 商店中的 IDPROPERTY FOR COMBINED ID's

c - 警告 : unknown escape sequence '\

javascript - ObservableArray 未绑定(bind)到 GUI

javascript - HTML + Node.js 文件上传

c# - 正则表达式可以从字符串中提取多个数字吗?

javascript - 匹配完整句子,跳过虚假点