ES6筆記-正則表達式和字符串正則方法


 

RegExp構造函數

在ES5中,RegExp構造函數的參數有兩種情況。

第一種情況是,參數是字符串,這時第二個參數表示正則表達式的修飾符(flag)。

var regex = new RegExp('xyz', 'i'); // 等價於 var regex = /xyz/i; 

第二種情況是,參數是一個正則表示式,這時會返回一個原有正則表達式的拷貝。

var regex = new RegExp(/xyz/i); // 等價於 var regex = /xyz/i; 

但是,ES5不允許此時使用第二個參數,添加修飾符,否則會報錯。

var regex = new RegExp(/xyz/, i); // Uncaught TypeError: Cannot supply flags when constructing one RegExp from another 

ES6改變了這種行為。如果RegExp構造函數第一個參數是一個正則對象,那么可以使用第二個參數指定修飾符。而且,返回的正則表達式會忽略原有的正則表達式的修飾符,只使用新指定的修飾符。

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

上面代碼中,原有正則對象的修飾符是ig,它會被第二個參數i覆蓋。

字符串的正則方法

字符串對象共有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]

字符串對象共有4個方法,可以使用正則表達式:match()replace()search()split()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM