ECMAScript6 新特性 「正則的擴充套件」

2021-09-19 09:30:39 字數 2222 閱讀 7376

es6 允許regexp建構函式接受正規表示式作為引數。第二個引數指定修飾符,如果存在則使用指定的修飾符。

var regexp = new regexp(/xyz/i, "ig");

console.log(regexp.flags); //gi

字串物件的4個使用正規表示式的方法:match(),replace(),search(),split()這四個方法全部呼叫regexp的例項的方法。

es6對正規表示式新增了u修飾符,含義為「unicode模式」,用來正確處理大於\uffff的unicode字元;

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

// false

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

// true

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

點字元

點(.)字元不能識別碼點大於0xffff的unicode字元,必須加上u修飾符。

var s = '?';

/^.$/.test(s) // false

/^.$/u.test(s) // true

unicode字元表示法

大括號表示unicode字元,只有加上u才能識別

/\u/.test('a') // false

/\u/u.test('a') // true

/\u/u.test('?') // true

量詞

使用u修飾符後,所有量詞都會正確識別大於碼點大於0xffff的unicode字元。

/a/.test('aa') // true

/a/u.test('aa') // true

/?/.test('??') // false

/?/u.test('??') // true

預定義模式

u修飾符也影響到預定義模式

/^\s$/.test('?') // false

/^\s$/u.test('?') // true

i修飾符

有些unicode字元的編碼不同,但是字型很相近,比如,\u004b與\u212a都是大寫的k。

/[a-z]/i.test('\u212a') // false

/[a-z]/iu.test('\u212a') // true

除了u修飾符,es6還為正規表示式新增了y修飾符,叫做「粘連」(sticky)修飾符。

y修飾符的作用與g修飾符類似,不同之處在於,g修飾符只要剩餘位置中存在匹配就可,而y修飾符確保匹配必須從剩餘的第乙個位置開始,這也就是「粘連」的涵義。

var s = 'aaa_aa_a';

var r1 = /a+/g;

var r2 = /a+/y;

r1.exec(s) // ["aaa"]

r2.exec(s) // ["aaa"]

r1.exec(s) // ["aa"]

r2.exec(s) // null

表示是否設定了y修飾符

// es5的source屬性

// 返回正規表示式的正文

/abc/ig.source

// "abc"

// es6的flags屬性

// 返回正規表示式的修飾符

/abc/ig.flags

// 'gi'

字串必須轉義,才能作為正則模式。

function escaperegexp(str) \(\)\*\+\?\.\\\^\$\|]/g, '\\$&');

}let str = '/path/to/resource.html?search=query';

escaperegexp(str)

// "\/path\/to\/resource\.html\?search=query"

上面的**和墊片模組regexp.escape都可以

ECMA Script 6新特性之解構賦值

1.基本概念用法 1.1解構賦值 es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值。var a 1 var b 2 var c 3 上述賦值語句用解構賦值為 var a,b,c 1,2,3 1.2上述的解構發生在等號左右模式相同的情況下,如果等號兩邊的模式不一致,解構可能會不成功 當變數...

EcmaScript 6 箭頭函式

es5 var total values.reduce function a,b 0 es6 var total values.reduce a,b a b,0 箭頭即乙個函式的簡化 es5 confetti btn click function event es6 confetti btn cli...

ECMAScript6掃盲筆記 一

ecma組織推出的ecmascript是乙個標準 協議 js是協議的實現。ecmascript簡稱ecma或es。目前使用最多的是es5.1,es6正式推出是在2015年。就醬 es6 es2015 相容性 es6 es2015 支援 ie10 chrome firefox 移動端 nodejs。和...