RegExp 正規運算式,是一個讓文字篩選可以有很大彈性的東西,昨天概略介紹了他的組成,今天讓我們繼續深入聊解RegExp 的其他屬性。
決定RegExp下一次匹配開始的索引位置,預設是0。
特別注意,lastIndex是instances,而不是RegExp原型的屬性,所以從constructor看不到她。
只有當RegExp的flag是g(全局搜索)及y(黏性搜索)才會有這個property,
所以只會運用在test()跟exec()上面,,
當lastIndex值超過字串長度時,會被設為0。
當lastIndex值小於或等於字串長度時,會從lastIndex值開始匹配。
當匹配到對象時,lastIndex值會變成對象結尾位置的索引值。
當沒有匹配對象時lastIndex會回歸0。
RegExp.prototype.constructor
正規運算式的原始結構。
RegExp.prototype.exec ( string )
將一個RegExp正規運算式與string做匹配,如果匹配失敗會回傳null
,匹配成功會回傳一個數組陣列
回傳值:
index 0:匹配的RegExp
input:被匹配的string
groups:如果RegExp有設置name,會將批配的結果放在group內,如果有name則回傳undefined。
indices(Optional):當RegExp的flag設為d的時候才有,輸出一個陣列,表示匹配結果的邊界。
get RegExp.prototype.dotAll
鑑驗RegExp的flag有沒有"s",並回傳Boolean表示結果。
get RegExp.prototype.flags
回傳RegExp的flag。
get RegExp.prototype.global
鑑驗RegExp的flag有沒有"g",並回傳Boolean表示結果。
get RegExp.prototype.hasIndices
鑑驗RegExp的flag有沒有"d",並回傳Boolean表示結果。
get RegExp.prototype.ignoreCase
鑑驗RegExp的flag有沒有"i",並回傳Boolean表示結果。
RegExp.prototype [ @@match ] ( string )
RegExp.prototypeSymbol.match
用正規表達式去匹配一個字串,並回傳第一個結果。
與字串的String.prototype.match雷同。
RegExp.prototype [ @@matchAll ] ( string )
RegExp.prototypeSymbol.matchAll
用正規表達式去匹配一個字串,並用陣列回傳全部的結果。
與字串的String.prototype.matchAll雷同。
get RegExp.prototype.multiline
鑑驗RegExp的flag有沒有"m",並回傳Boolean表示結果。
RegExp.prototype [ @@replace ] ( string, replaceValue )
RegExp.prototype[Symbol.replace](string, replaceValue)
將string字串,依RegExp匹配的結果替換成replaceValue,
跟字串的
RegExp.prototype [ @@search ] ( string )
RegExp.prototypeSymbol.search
用RegExp去匹配string,並回傳匹配的索引值。
與字串的String.prototype.search雷同。
get RegExp.prototype.source
取出RegExp的文本,即是去掉前後的"/"及flag
RegExp.prototype [ @@split ] ( string, limit )
RegExp.prototype[ Symbol.split ]( string, limit )
將字串依RegExp拆成一個陣列數組,
limit表示拆分的數量限制。
與字串的String.prototype.split雷同。
RegExp.prototype.sticky
鑑驗RegExp的flag有沒有"y",並回傳Boolean表示結果。
RegExp.prototype.test ( string )
用RegExp匹配string字串,,並回傳Boolean表示結果
RegExp.prototype.toString ( )
將RegExp轉換成一個字串。
RegExp.prototype.unicode
鑑驗RegExp的flag有沒有"u",並回傳Boolean表示結果。
總感覺,RegExp的相關用法幾乎都是跟字串緊緊相連,畢竟String跟RegExp都是JavaScript裡面Text Processing的重要一環,而我們大多數拿到的資料都是一個文字或是數字,所以Text Processing(文字處理)是JavaScript很重要的一環。
參考資料