最近开始做angularjs2项目时碰到一个问题,就是同样是使用正则表达式,使用字面量定义和使用构造函数创建,在使用上是有区别的,例如如下代码:
const red=new RegExp('^\d+$');
const blue=/^\d+$/;
console.log(red.test(12)); //false
console.log(blue.test(12)); //true
因为在RegExp的构造函数中参数是字符串,所以需要对字符进行双重转义,所有元字符都必须要双重转义,上面的代码应该改为:
const red=new RegExp('^\\d+$');
另外,在ES5中规定使用正则表达式字面量和调用构造函数一样,每次都会创建RegExp实例。