ES6里关于正则表达式的拓展

Posted 古兰精

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6里关于正则表达式的拓展相关的知识,希望对你有一定的参考价值。

一、构造函数

  在 ES5 中,RegExp构造函数的参数有两种情况。

  第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag)

var regex = new RegExp(xyz, i);
// 等价于
var regex = /xyz/i;

  第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝

var regex = new RegExp(/xyz/i);
// 等价于
var regex = /xyz/i;

  但是,ES5 不允许此时使用第二个参数添加修饰符,否则会报错

// Uncaught TypeError: Cannot supply flags when constructing one RegExp from another
var regex = new RegExp(/xyz/, i);

  ES6 改变了这种行为。如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符

console.log(new RegExp(/abc/ig, i).flags);    //i
//上面代码中,原有正则对象的修饰符是ig,它会被第二个参数i覆盖

  flags:ES6 为正则表达式新增了flags属性,会返回正则表达式的修饰符

//ES5的source属性返回正则表达式的正文
/abc/ig.source//"abc"

// ES6的flags属性返回正则表达式的修饰符
/abc/ig.flags//‘gi‘

 

以上是关于ES6里关于正则表达式的拓展的主要内容,如果未能解决你的问题,请参考以下文章

ES6正则拓展

《ES6标准入门》29~48Page 字符串拓展 正则拓展

ES6里关于类的拓展:继承与派生类

ES6里关于字符串的拓展

ES6里关于作用域的拓展:块级作用域

ES6里关于模板字面量的拓展