ES6正則拓展

2022-05-03 20:54:13 字數 1765 閱讀 5974

字串的正則方法

字串物件共有 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修飾符,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

上面**有兩個正規表示式,乙個使用g修飾符,另乙個使用y修飾符。這兩個正規表示式各執行了兩次,第一次執行的時候,兩者行為相同,剩餘字串都是_aa_a。由於g修飾沒有位置要求,所以第二次執行會返回結果,而y修飾符要求匹配必須從頭部開始,所以返回null

string.prototype.matchall

var regex = /t(e)(st(\d?))/g;

var string = 'test1test2test3';

var matches =;

varmatch;

while (match =regex.exec(string))

matches//[

//["test1", "e", "st1", "1", index: 0, input: "test1test2test3"],

//["test2", "e", "st2", "2", index: 5, input: "test1test2test3"],

//["test3", "e", "st3", "3", index: 10, input: "test1test2test3"]

//]

es6 陣列拓展

陣列 屬性 constructor,length,prototype 方法 push,pop,shift,unshift 新增 splice,slice,reverse,sort,concat,filter,map,some,every 1 filter 過濾出符合條件的值,返回新陣列 var sp...

es6的函式拓展

參考 1.增加函式預設值 es6允許為函式提供預設值,與解構賦值一起使用,非常地方便 function foo foo 相當於執行let 輸出undefined 5 foo 相當於執行let 輸出 1 5 foo 1 2 foo typeerror cannot read property x of...

ES6 函式拓展內容

es6允許為函式的引數設定預設值,即直接寫在引數定義的後面。function log x,y world log hello hello world log hello yivi hello yivi log hello hello引數變數是預設宣告的,因此不能再用let或const再次宣告,也不能...