JavaScript細節----解密match(RegExp)

看正則表達式的文檔,對於match的返回值,說的很官方:正則表達式

        存放匹配結果的數組。該數組的內容依賴於 regexp 是否具備全局標誌 g。數組

那最後match以後,返回值是什麼結果呢?  咱們經過debugger,也可以很快肯定下來。cookie

爲了從此開發的時候減小調試,對此細節作個記錄,之後只要一看,就能知道該取數組的哪一個值了。debug

下面的例子是讀取cookie調試

example:  var  key = "username";regexp

                  var reg  =new RegExp("(^| )"+key+"=([^;]*)(;|$)");索引

                  var arr= document.cookie.match(reg);開發

返回值    arr = ["username=aaaa;", "", "aaaa", ";", index: 0, input: "username=aaaa; mycookie"]文檔

分析: arr[0]  是經過正則表達式匹配到的全部字符串。字符串

            arr[1-3]  是正則表達式分段匹配出來的值

                          "" =======(^| )

                          "aaaa" =======([^;]*)

                         ";"===========(;|$)

           index:0   經過正則表達式查找到的內容,在總字符串中匹配到的索引位置

           input:   提供進行正則表達式匹配的字符串(match()的調用者)  

 

總結: 根據上面的實踐,得出如下結論。 在正則表達式匹配時,若是須要第i個子表達式的值,則直接取結果數組中第i個值。 

            用上面的例子來表達就是     arr[i]=(j);

            i表示數組索引,j表示子正則表達式的從左到右的計數(第j個子表達式),i=j。

相關文章
相關標籤/搜索