JavaScript细节----解密match(RegExp)

看正则表达式的文档,对于match的返回值,说的很官方:

        存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。

那最后match之后,返回值是什么结果呢?  我们通过debugger,也能够很快确定下来。

为了今后开发的时候减少调试,对此细节做个记录,以后只要一看,就能知道该取数组的哪个值了。

下面的例子是读取cookie

example:  var  key = "username";

                  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。

转载于:https://my.oschina.net/u/2457585/blog/703419

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值