最近开发的一个项目,对网络安全要求很高,不可以执行文本js,比如就禁止用eval函数(使用第三种方法),故总结几种转换方法。
1.使用eval函数
2.new Function
3.new RegExp
注意第3种方法,实例化RegExp对象,会在原先字符串基础上加\,所以要提前去掉。
代码如下
let fileIndex = '0-9'
let reg = '/[a-zA-Z' + fileIndex + '_-]+/'
var reg1 = eval(reg)
var reg2 = new Function('return ' + reg)();
var reg3 = new RegExp(reg)
console.log(reg1);
console.log(reg2);
console.log(reg3);
let regCopy = '[a-zA-Z' + fileIndex + '_-]+'
var reg4 = new RegExp(regCopy)
console.log(reg4);