ES6知識點整理之----正則表達式擴展
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知識點整理之----正則表達式擴展