1碌补、RegExp構造函數(shù)
在es5中捎稚,RegExp構造函數(shù)的參數(shù)有兩種情況。
第一種情況是拥褂,參數(shù)是字符串娘锁,這時第二個參數(shù)表示正則表達式的修飾符(flag)。
var regex = new RegExp('xyz','i');
//等價于
var regex = ?/xyz/i;
第二種情況是饺鹃,參數(shù)是一個正則表示式莫秆,這時會返回一個原有正則表達式的拷貝。
var regex = newRegExp(/xyz/i);
// 等價于
var regex = /xyz/i;
但是es5不允許此時使用第二個參數(shù)添加修飾符悔详,否則會報錯镊屎。
var regex = new RegExp(/xyz,'i');
es6改變了這種行為。如果RegExp構造函數(shù)第一個參數(shù)是一個正則對象茄螃,那么可以使用第二個參數(shù)指定修飾符缝驳。而且,返回的正則表達式會忽略原有的正則表達式的修飾符归苍,只使用新指定的修飾符用狱。
new RegExp(/abc/ig,'i').flags
上面代碼中,原有正則對象的修飾符是ig拼弃,它會被逼第二個參數(shù)i覆蓋夏伊。
2、字符串的正則方法
字符串對象共有4個方法吻氧,可以使用正則表達式:match()溺忧、replace()咏连、search()和split()。
es6將這4個方法砸狞,在語言內(nèi)部全部調(diào)用RegExp的實例方法捻勉,從而做到所有與正則相關的方法,全部都定義在RegExp對象上刀森。