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。

相关文章
相关标签/搜索