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