国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ES6正則表達式擴展筆記

2024-05-06 15:13:51
字體:
來源:轉載
供稿:網友

 前面的話

  正則表達式是javascript操作字符串的一個重要組成部分,但在以往的版本中并未有太多改變。然而,在ES6中,隨著字符串操作的變更, ES6也對正則表達式進行了一些更新。本文將詳細介紹ES6正則表達式擴展

構造函數

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

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

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

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

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

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

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

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

console.log(new RegExp(/abc/ig, 'i').flags);//i

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

【flags】

  ES6 為正則表達式新增了flags屬性,會返回正則表達式的修飾符

//ES5的source屬性返回正則表達式的正文/abc/ig.source//"abc"http:// ES6的flags屬性返回正則表達式的修飾符/abc/ig.flags//'gi' 

正則方法

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

u修飾符

  正則表達式可以完成簡單的字符串操作,但默認將字符串中的每一個字符按照16位編碼處理。為了解決這個問題, ES6 對正則表達式添加了u修飾符,含義為“Unicode模式”,用來正確處理大于/uFFFF的 Unicode 字符。也就是說,會正確處理四個字節的 UTF-16 編碼

/^/uD83D/u.test('/uD83D/uDC2A') // false/^/uD83D/.test('/uD83D/uDC2A') // true

  一旦為正則表達式設置了 u 修飾符,正則表達式將會識別32位的輔助平面字符為1個字符,而不是兩個

【點號】

  點(.)字符在正則表達式中,含義是除了換行符以外的任意單個字符。對于碼位大于0xFFFF的 Unicode 字符,點字符不能識別,必須加上u修飾符

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 项城市| 精河县| 乌兰县| 吴桥县| 井陉县| 韶山市| 东台市| 大连市| 肥城市| 普格县| 岳普湖县| 南溪县| 平凉市| 沁源县| 舟曲县| 碌曲县| 鹿邑县| 鄂托克旗| 满城县| 富源县| 抚州市| 黄平县| 奇台县| 内丘县| 巩义市| 蒙自县| 汝阳县| 五华县| 德格县| 米脂县| 玉门市| 武冈市| 洪湖市| 九台市| 鲜城| 府谷县| 同仁县| 铁力市| 云龙县| 简阳市| 红河县|