在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物件上。
字串物件共有4個方法,可以使用正規表示式:match()
、replace()
、search()
和split()
。
3、es6對正規表示式新增了u
修飾符,含義為「unicode模式」,用來正確處理大於\uffff
的unicode字元。也就是說,會正確處理四個位元組的utf-16編碼。對於碼點大於0xffff
的unicode字元,點字元不能識別,必須加上u
修飾符。es6新增了使用大括號表示unicode字元,這種表示法在正規表示式中必須加上u
修飾符,才能識別。
/\u/.test('a') //false
/\u/u.test('a') //
true
/\u/u.test('
ES6學習 正規表示式
建構函式 y修飾符 u 修飾符 unicode匹配 console.log u 1 udb3d test udb3d udc2a true console.log u 1 udb3d u.test udb3d udc2a false unicode匹配,超過 個位元組了,加u,console.log...
es6 遇到正規表示式
let evalexpr g let expr s s g 上面例項 中使用懶惰匹配的目的是,要找出字串中包含的所有的以 開頭,以 結尾的子字串,如果不是懶惰匹配那 會只返回乙個字串,舉例 let evlexpr g let evlexpr1 g let str for let i 0 i data...
ES6學習 正規表示式新特性
簡單說一下正規表示式中新加入的特性 1 flags屬性 abc ig.flags gi2 u unicode標記,chrome 48都還不支援這個標記 ud83d test ud83d udc2a true ud83d u.test ud83d udc2a false ud83d u.test ud...