字串的正則方法
字串物件共有 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再次宣告,也不能...