看正则表达式的文档,对于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。