正则表达式中加变量

当我们定义一个字符串、数组、对象等等的时候,我们习惯用字面量来定义,例如:

1
2
3
var s = "string";
var a = [1,2];
var o = {};

当需要加入变量时也十分简单:

1
2
3
4
var v = "bl";
var s = "string" + v; //"stringbl"
var a = [1,v]; //[1,"bl"]
var o = {first : v}; //{first : "bl"}

但是如果是正则的字面量,就不能像上面这样加入变量了。
此时应该采用构造函数的形式来加入变量:

1
2
var v = "bl";
var re = new RegExp("^\\d+" + v + "$","gim"); // re为/^\d+bl$/gim