正則構造函數通常都是兩個參數,ES6以前若是隻有一個正則表達式的參數:正則表達式
var reg = new RegExp(/a/g);json
這時候是不容許再加一個參數:函數
var reg = new RegExp(/a/g, i);這是錯誤的,ES6是容許的,且第二個參數會覆蓋以前的模式。prototype
ES6把字符串使用正則的四個方法都變成調用正則對象RegExp上的方法,使用的時候是沒什麼區別,只是內部調用改變了,好比調用math方法是調用RegExp的prototype上面的方法。code
新增了u修飾符,針對UTF-16的Unicode使用的。而後也增長了unicode的屬性,表示是不是標誌u。cdn
新增了y修飾符,叫粘連sticky屬性。也是全局匹配,解釋說後一次匹配都從上一次匹配成功的下一個位置開始,增長了新的修飾符,相應的也增長了sticky屬性。研究了一下,並無理解,但願有人能指點一下。對象
咱們能夠用source獲取正則的表達式,ES6新增了flags屬性獲取標誌符igmuy等。unicode
ES2018對正則新增了一些,這邊就瞭解到ES6裏面:字符串
s修飾符,是2018引入的,爲了解決行終止符\n\r等,同時還引入了dotAll屬性返回布爾值。it
ES2018還引入了後行斷言,以前只支持先行斷言和先行否斷言。先行斷言的意思是隻有在某個以前的才匹配,先行否斷言是隻有不在某個以前才匹配。我以爲這個能夠好好了解一下。
Unicode屬性類,\p{...}和\P{...},容許匹配符合Unicode某種屬性的全部字符。
具名匹配,採用圓括號提早的時候,每一組的含義不明確,ES2018引入了具名組匹配,便於閱讀和引用:
無具名:/(\d{4})-(\d{2})-(\d{2})/
具名:/(?\d{4})-(?\d{2})-(?\d{2})/
引用的時候跟json同樣,順序改變也不影響。
新增提案String.prototype.matchAll方法,一次性取出全部匹配,返回一個遍歷器。
其實簡單正則理解一下就夠用了,至於擴展和一些幾乎不用到的瞭解一下就夠了,真的須要使用的時候再去研究。