ES6入門 正則的擴充套件

2022-03-03 09:37:35 字數 1307 閱讀 5892

1、regexp建構函式

在es5中,regexp建構函式的引數有兩種情況。第一種情況是引數是字串,這時第二個引數表示正規表示式的修飾符;第二種情況是,引數是乙個正規表示式,這時會返回乙個原有正規表示式的拷貝。但是,es5不允許此時使用第二個引數,新增修飾符,否則會報錯

var regex = new regexp('xyz','i');

//等價於

var regex = /xyz/i;

var regex = new regexp(/xyz/i);

//等價於

var regex = /xyz/i;

var regex = new regexp(/xyz/,'i'); //

報錯

es6改變了這種行為,如果regexp建構函式第乙個引數是乙個正則物件,那麼可以使用第二個引數指定修飾符。而且,返回的正規表示式會忽略原有的正規表示式的修飾符,只使用新指定的修飾符。

2、字串的正規表示式

字串物件共有4個方法,可以使用正規表示式:match()、replace()、search()和split()。

3、u修飾符

es6對正規表示式新增了u修飾符,含義為「unicode模式」,用來正確處理大於\uffff的unicode字元。也就是說,會正確處理四個位元組的utf-16編碼。

4、y修飾符

除了u修飾符,es6還為正規表示式新增了y修飾符,叫做「粘連(sticky)」修飾符。y修飾符的作用域g修飾符類似,也是全域性匹配,後一次匹配都從上一次匹配成功的下乙個位置開始。不同之處在於g修飾符只要剩餘位置中存在匹配就可以,而y修飾符確保匹配必須從剩餘的第乙個位置開始,這也是「粘連」的涵義。

5、sticky屬性

與y修飾符相匹配,es6的正則物件多了sticky屬性,表示是否設定了y修飾符。

6、flags屬性

es6位正規表示式新增了flags屬性,會返回正規表示式的修飾符。

7、regexp.escape()

字串必須轉義,才能作為正則模式。

8、s修飾符:dotall模式

很多時候我們希望匹配的是任意單個字元,這時有乙個提案,就是引入/s修飾符,使得 . 可以匹配任意單個字元。這被稱為dotall模式,即點(dot)代表一切字元。所以,正規表示式還引入了乙個dotall屬性,返回乙個布林值,表示該正規表示式是否處在dotall模式中。

ES6入門之正則的擴充套件

引數為字串,那麼第二個引數表示正規表示式的修飾符,如下 var regex new regexp xyz i 等價於 var regex xyz i 複製 引數為乙個正規表示式,這時返回乙個原有正規表示式的拷貝。如下 var regex new regexp xyz i 等價於 var regex ...

ES6入門之正則的擴充套件

引數為字串,那麼第二個引數表示正規表示式的修飾符,如下 var regex new regexp xyz i 等價於 var regex xyz i 複製 引數為乙個正規表示式,這時返回乙個原有正規表示式的拷貝。如下 var regex new regexp xyz i 等價於 var regex ...

ES6 正則的擴充套件

一,regexp 建構函式 es5中,regexp建構函式的引數有兩種情況。1,引數是字串,第二個引數表示正規表示式的修飾符 flag 2,引數是乙個正規表示式,返回乙個原有正規表示式的拷貝。es6中,如果regexp建構函式第乙個引數是乙個正則物件,那麼可以使用第二個引數指定修飾符。而且,返回的正...