博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript细节----解密match(RegExp)
阅读量:6617 次
发布时间:2019-06-25

本文共 738 字,大约阅读时间需要 2 分钟。

hot3.png

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

你可能感兴趣的文章
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>
php使用curl下载指定大小的文件
查看>>
VS2013创建Node.js C++ Addons的过程
查看>>
amaze ui中的icon button
查看>>
tcp 三次握手
查看>>
XML中添加换行符
查看>>
在C#中使用属性控件添加属性窗口
查看>>
printf()详解之终极无惑
查看>>
交叉检验---训练数据,验证数据和测试数据
查看>>
AspNetPager分页控件配置
查看>>
第 8 章 Spring Data
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
查看>>
C语言 编程练习22题
查看>>
Log4Net 生成多个文件、文件名累加解决方法
查看>>
oracle 包,函数,过程,块的创建和执行及在java中执行(转)
查看>>
CloudDBA现场助力双十一
查看>>
虚拟现实技术或会产生副作用
查看>>
【云图】如何设置微信里的全国实体店地图?
查看>>
db file async I/O submit 等待事件优化
查看>>
前端需要了解的 SSO 与 CAS 知识
查看>>