动态变量写入正则表达式

时间:2014-03-13 19:21:25

标签: javascript regex

我有一个简单的正则表达式:

str.match(/SK=([\w‌​\-]+)/i);

我希望SK部分是动态的,因此我可以返回SK=WP=等匹配...

所以我正在寻找类似的东西:

var attr = 'SK';
str.match(/' + attr  + '=([\w‌​\-]+)/i);

1 个答案:

答案 0 :(得分:2)

使用构造函数语法创建正则表达式:

var myRegex = new RegExp(attr + "([\\w‌​\\-]+)","i");

然后:

str.match(myRegex);

见这里(强调我的):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

  

文字表示法在计算表达式时提供正则表达式的编译。 当正则表达式保持不变时使用文字表示法。例如,如果使用文字表示法构造循环中使用的正则表达式,则不会在每次迭代时重新编译正则表达式。

     

正则表达式对象的构造函数,例如,新的RegExp(" ab + c"),提供正则表达式的运行时编译。 当您知道正则表达式模式将会发生变化,或者您不知道模式并从其他来源(例如用户输入)获取模式时,请使用构造函数。