es6學習筆記整理(二)正則擴充套件

2021-08-27 08:09:29 字數 1785 閱讀 7614

正則新特性

在正式開始之前,簡單地了解一下es5的修飾符:

這些符號被稱為正規表示式模式修飾符,用法含義如下:

1、/g 表示該表示式將用來在輸入字串中查詢所有可能的匹配,返回的結果可以是多個。如果不加/g最多隻會匹配乙個

2、/i 表示匹配的時候不區分大小寫,這個跟其它語言的正則用法相同

3、/m 表示多行匹配。什麼是多行匹配呢?就是匹配換行符兩端的潛在匹配。影響正則中的^$符號

4、/s 與/m相對,單行模式匹配。

5、/e 可執行模式,此為php專有引數,例如preg_replace函式。

6、/x 忽略空白模式。

這裡有值得注意的一點,這些修飾符是可以混合使用的。例如 /ig、/ie等。

1、建構函式的變化

//es5

let regex = new regexp('xyz','i');//忽略大小寫

let regex2 = new regexp(/xyz/i);

let regex12 = /xyz/i; //上面兩種方法簡寫

console.log(regex.test('xyz123'), regex12.test('xyz123'));//true, true

//es6

let regex3 = new regexp(/xyz/ig, 'i');

console.log(regex3.flags);//i 獲取正則修飾符,es6中第二個引數覆蓋了第乙個的修飾符

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、u修飾符*

/*u修飾符:

* 理解:正則處理uncode字元時候的特徵值

* 如果處理的字串中有大於兩個位元組的一定要加u修飾符

* 修改es5中。點可以匹配一切字元的觀念,大於兩個位元組就不能匹配

* */

//不加u,無法將四個位元組的utf-16編碼識別為乙個字元,所以就可以產生匹配。

console.log('u-1:', /^\ud83d/.test('\ud83d\udc2a'));//true

//加u,將四個位元組的utf-16編碼識別為乙個字元,所以就不可以產生匹配。

console.log('u-2:', /^\ud83d/u.test('\ud83d\udc2a'));//false

console.log(/\u/.test('a'));//false

console.log(/\u/u.test('a'));//true {}中的是unicode編碼不加u無法識別

console.log(`\u`);

//. 用於匹配任何字元,在這種大於兩個位元組字元的情況下不成立

let s = '

ES6學習 正則的擴充套件

字串物件共有 4 個方法,可以使用正規表示式 match replace search 和split es6 將這 4 個方法,在語言內部全部呼叫regexp的例項方法,從而做到所有與正則相關的方法,全都定義在regexp物件上 string.prototype.match 呼叫 regexp.pr...

ES6精華 正則擴充套件

本篇概括了es6中正規表示式新增部分的精華要點 最好有es5的基礎 使正則處於unicode模式。關於es6的字元擴充套件知識,可檢視這裡。處於unicode模式下的正則,可以正確識別32位 四位元組 字元。let c ud83d udc2a 32位字元 console.log s test c f...

es6 語法 (正則擴充套件)

es5中常見修飾符是g i es6中新增 y,u exec 方法用於檢索字串中的正規表示式的匹配。test a false console.log u u.test a true 加上u才能被識別 console.log u let s console.log u test s false cons...