iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
Modern Web

想轉職的鯊魚從零基礎開始學習JavaScript系列 第 27

想轉職的鯊魚從零基礎開始學習JavaScript Day-27 RegExp 正規運算式 (二)

  • 分享至 

  • xImage
  •  

前言

RegExp 正規運算式,是一個讓文字篩選可以有很大彈性的東西,昨天概略介紹了他的組成,今天讓我們繼續深入聊解RegExp 的其他屬性。

Properties of RegExp Instances

  • lastIndex

決定RegExp下一次匹配開始的索引位置,預設是0。

特別注意,lastIndex是instances,而不是RegExp原型的屬性,所以從constructor看不到她。

只有當RegExp的flag是g(全局搜索)及y(黏性搜索)才會有這個property,
所以只會運用在test()跟exec()上面,,

當lastIndex值超過字串長度時,會被設為0。

當lastIndex值小於或等於字串長度時,會從lastIndex值開始匹配。

當匹配到對象時,lastIndex值會變成對象結尾位置的索引值。

當沒有匹配對象時lastIndex會回歸0。

Properties of the RegExp Prototype Object

  • 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很重要的一環。

鯊語錄

參考資料

ECMA-262
MDN-RegExp


上一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-26 RegExp 正規運算式 (一)
下一篇
想轉職的鯊魚從零基礎開始學習JavaScript Day-28 Function-parameters & Arrow function expressions 函式 - 參數 與 箭頭函式
系列文
想轉職的鯊魚從零基礎開始學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言