1. 程式人生 > >ES6知識點整理之----正則表達式擴展

ES6知識點整理之----正則表達式擴展

bsp tor strong cap all 布爾值 參數 單個字符 search

1、如果RegExp構造函數第一個參數是一個正則對象,那麽可以使用第二個參數指定修飾符。而且,返回的正則表達式會忽略原有的正則表達式的修飾符,只使用新指定的修飾符。

new RegExp(/abc/ig, ‘i‘).flags
// "i"

2、字符串對象共有 4 個方法,可以使用正則表達式:match()replace()search()split()。ES6 將這 4 個方法,在語言內部全部調用RegExp的實例方法,從而做到所有與正則相關的方法,全都定義在RegExp對象上。

String.prototype.match 調用 RegExp.prototype[Symbol.match]
String.prototype.replace 調用 RegExp.prototype[Symbol.replace]
String.prototype.search 調用 RegExp.prototype[Symbol.search]
String.prototype.split 調用 RegExp.prototype[Symbol.split]

3、ES6 對正則表達式添加了u修飾符,含義為“Unicode 模式”,用來正確處理大於\uFFFF的 Unicode 字符。

4、RegExp.prototype.unicode 屬性:正則實例對象新增unicode屬性,表示是否設置了u修飾符。

5、ES6 還為正則表達式添加了y修飾符,叫做“粘連”(sticky)修飾符。與g修飾符類似,但它確保匹配必須從剩余的第一個位置開始,這也就是“粘連”的涵義。實際上,y修飾符號隱含了頭部匹配的標誌^,y修飾符的設計本意,就是讓頭部匹配的標誌^在全局匹配中都有效。單單一個y修飾符對match方法,只能返回第一個匹配,必須與g修飾符聯用,才能返回所有匹配。

6、RegExp.prototype.sticky 屬性:實例對象新增sticky屬性,表示是否設置了y修飾符

7、RegExp.prototype.flags 屬性:返回正則表達式的修飾符

8、ES2018 引入了s修飾符,使得.可以匹配任意單個字符,這被稱為dotAll模式,即點(dot)代表一切字符。

9、正則表達式還引入了一個dotAll屬性,返回一個布爾值,表示該正則表達式是否處在dotAll模式

10、ES2018 引入了一種新的類的寫法\p{...}\P{...},允許正則表達式匹配符合 Unicode 某種屬性的所有字符。

11、ES2018 引入了具名組匹配(Named Capture Groups),允許為每一個組匹配指定一個名字,既便於閱讀代碼,又便於引用。

12、String.prototype.matchAll:可以一次性取出所有匹配。不過,它返回的是一個遍歷器(Iterator),而不是數組。

ES6知識點整理之----正則表達式擴展