zoukankan      html  css  js  c++  java
  • 将URL截取转换成json

    这是今天的面试题,其实不难,但是今天状态真的是差的要死,最后跪了,前端虐我千百遍,我待前端如初恋。只想说找工作累。

    function getQueryObject(url) {
        url = url == null ? window.location.href : url;
        var search = url.substring(url.lastIndexOf("?") + 1);
        var obj = {};
        var reg = /([^?&=]+)=([^?&=]*)/g;
        search.replace(reg, function (rs, $1, $2) {
            var name = decodeURIComponent($1);
            var val = decodeURIComponent($2);               
            val = String(val);
            obj[name] = val;
            return rs;
        });
        return obj;
    }

    这是网上目前最流行的一种做法。我来解释一下,主要是正则。

    首先将字符串进行分割以“?”为分界线,当然我们在进行分割的时候要将得到的索引加一,不然会把这个?也包含进去。

    然后主要就是正则了。我们主要匹配的东西都是以query=name的形式存在,然后中间以&进行连接。那么我们的value和那么一般定义为除?&=之外的其他任何字符。

    +代表匹配一个或多个,零个肯定是不行的。*代表0个或多个,这里value没有是允许的。那么这里要注意的就是^在单独使用时,代表以什么开头,在中括号里面使用代表不包含的意思。正则基本就是这么多了。

    下面就是replace这个方法了,第一个参数就是要进行匹配的字符串,可以使字符串也可以是正则表达式。而后面可以使替换的字符串,也可以是一个函数。其中rs表示匹配成功的字符串序列,$1,表示第一个()内所匹配的内容,$2为第二个,依次类推。当我们使用全局匹配时,只要匹配成功的子串最后都会执行一遍function函数。详细链接

    decadeURIComponent就是url字符转码。

  • 相关阅读:
    接口框架 python+unittest+request+HTMLTestRunner
    python循环语句的简单条件语句、多重条件语句和嵌套条件语句编写
    MAC下配置java+jmeter环境变量
    jmeter _Random函数生成随机数
    python-unittest模块中的各类断言
    Django密码错误报错提醒
    转载Django 500,404,400错误修改优化
    postman从body,headers,data中获取token后回写做全局变量
    postman小白教程
    git拉取代码切换分支
  • 原文地址:https://www.cnblogs.com/djlxs/p/5890020.html
Copyright © 2011-2022 走看看