看正則表達式的文檔,對於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。