版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33237207/article/details/89533442
一、RegExp构造函数
在 ES5 中,RegExp构造函数的参数有下面两种情况:
情况1:第一个参数是字符串,这时第二个参数表示正则表达式的修饰符。
var regex = new RegExp('xyz', 'i');
// 等价于
var regex = /xyz/i;
情况2:参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。ES5 不允许此时使用第二个参数添加修饰符,否则会报错。
var regex = new RegExp(/xyz/i);
// 等价于
var regex = /xyz/i;
var regex = new RegExp(/xyz/, 'i');//报错
ES6 改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。
new RegExp(/abc/ig, 'i').flags
// "i"
二、unicode属性:表示是否设置了u修饰符。
const r1 = /hello/;
const r2 = /hello/u;
r1.unicode // false
r2.unicode // true
三、sticky属性:表示是否设置了y修饰符。
var r = /hello\d/y;
r.sticky // true
四、flags属性:会返回正则表达式的修饰符。
// ES5 的 source 属性:返回正则表达式的正文
/abc/ig.source
// "abc"
// ES6 的 flags 属性:返回正则表达式的修饰符
/abc/ig.flags
// 'gi'