如果给义一个字符串或是数组加入变量,是非常简单的事情,但是我们不能用这种常规思维来给正则表达式加入变量,比如
var param = 3;
var reg = "/^[0-9]+"+param+"[a-z]+$/"; ✘
var reg = /^[0-9]+"+param+"[a-z]+$/; ✘
var reg = /^[0-9]+$/+param+/^[a-z]+$/; ✘
首先不考虑准确性,这写法就怎么看怎么别扭,无论怎么写,都会被当作正则的一部分来处理。
这个时候 构造函数
出场,既然已经定义好的表达式不能加,那就在构造表达式的时候添加总行了吧,如下:
var param = 3;
var reg = new RegExp("^[0-9]+"+param+"[a-z]+$","g"); ✔ //得到:/^[0-9]+3[a-z]+$/
第二个参数根据具体情况添加,如"g"
全局检索,可有可无。
完美解决 ~