正則的擴充套件 RegExp建構函式

2021-08-16 07:17:50 字數 1889 閱讀 4569

1.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覆蓋。

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修飾符

es6 對正規表示式新增了u修飾符,含義為「unicode 模式」,用來正確處理大於\uffff的 unicode 字元。也就是說,會正確處理四個位元組的 utf-16 編碼。

/^\ud83d/u.test('\ud83d\udc2a') // false

/^\ud83d/.test('\ud83d\udc2a') // true

上面**中,\ud83d\udc2a是乙個四個位元組的 utf-16 編碼,代表乙個字元。但是,es5 不支援四個位元組的 utf-16 編碼,會將其識別為兩個字元,導致第二行**結果為true。加了u修飾符以後,es6 就會識別其為乙個字元,所以第一行**結果為false

一旦加上u修飾符號,就會修改下面這些正規表示式的行為。

(1)點字元

(.)在正規表示式中,含義是除了換行符的任意單字元,對於碼點大於0xffff的 unicode 字元,點字元不能識別,必須加上u修飾符。

var s = '

RegExp 建構函式

在 es5 中,regexp建構函式的引數有兩種情況。第一種情況是,引數是字串,這時第二個引數表示正規表示式的修飾符 flag var regex new regexp xyz i 等價於 var regex xyz i 第二種情況是,引數是乙個正規表示式,這時會返回乙個原有正規表示式的拷貝。var...

5 4 3 RegExp建構函式屬性

1 regexp建構函式包含一些屬性,這些屬性適用於作用域中的所有正規表示式,並且基於所執行的最近一次正規表示式操作而變化 2 這些屬性的另乙個獨特之處,就是可以通過2種方式訪問他們,換句話說,這些屬性分別有乙個長屬性和短屬性名 opera不支援短屬性 長屬性名 短屬性名 說明input 最近一次要...

Asp正規表示式 RegExp 函式

提供簡單的正規表示式支援功能。說明下面的 說明了regexp物件的用法 function regexptest patrn,strng dim regex,match,matches 建立變數。set regex newregexp 建立正規表示式。regex.pattern patrn 設定模式。...