可以詳細的講解一下這段代碼嗎?

可以詳細的講解一下這段代碼嗎?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好!

  1. 正则匹配的结果是分组进行的

    在匹配成功的情况下,match() 返回的结果是个数组,第 0 个元素是整个正则表达式的匹配内容,往后依次是各个分组匹配的内容(按括号先后顺序)

    所以你看到的 "" 其实是正则在分组配时匹配到的,比如:

    http://img1.sycdn.imooc.com//climg/5ea95c210990f16808440528.jpg

    只不过项目中咱们得到的地址字符串前面没有&,所以这里^(非)匹配成功了,也就是没有任何元素,所以返回了空字符串,另一个同理

  2. & ,如果有多参数时会使用&分离。所以这里是用来匹配地址中的& 的。

祝学习愉快~

好帮手慕柯南 2020-04-29 14:43:01

同学你好!

这段代码的功能是获取上一个页面传递的shopId,具体分析如下:

  1. 正则是寻找 &+url参数名字=值+&,&可以不存在。

    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");

  2. window.location.search.substr(1),就是用来获取url中的参数的,比如

    http://img1.sycdn.imooc.com//climg/5ea921880990d60403480040.jpg

  3. if (r != null) {  return decodeURIComponent(r[2]) }

    这里是开始匹配,找到了返回对应url值,没找到返回null。

    r的值:

    http://img1.sycdn.imooc.com//climg/5ea9219a09db627b06140045.jpg

    同学这里了解即可,在实际的开发中有很多用于校验的正则,同学直接拿来使用就可以~这里就是一个获取url中参数的方式。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 齊帥 #1
    decodeURIComponent(r[2]) 老師你這個裡面的數組為為什麼有兩個是空的?1和3
    2020-04-29 15:09:51
  • 提问者 齊帥 #2
    還有我不太懂她正則表達式的&是什麼意思 還有這([^&]*)(&|$)
    2020-04-29 15:11:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师