我有一个简单的正则表达式:
str.match(/SK=([\w\-]+)/i);
我希望SK
部分是动态的,因此我可以返回SK=
,WP=
等匹配...
所以我正在寻找类似的东西:
var attr = 'SK';
str.match(/' + attr + '=([\w\-]+)/i);
答案 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"),提供正则表达式的运行时编译。 当您知道正则表达式模式将会发生变化,或者您不知道模式并从其他来源(例如用户输入)获取模式时,请使用构造函数。