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 設定模式。...