• 将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字符转码。

  • 相关阅读:
    洛谷—— P2234 [HNOI2002]营业额统计
    BZOJ——3555: [Ctsc2014]企鹅QQ
    CodeVs——T 4919 线段树练习4
    python(35)- 异常处理
    August 29th 2016 Week 36th Monday
    August 28th 2016 Week 36th Sunday
    August 27th 2016 Week 35th Saturday
    August 26th 2016 Week 35th Friday
    August 25th 2016 Week 35th Thursday
    August 24th 2016 Week 35th Wednesday
  • 原文地址:https://www.cnblogs.com/djlxs/p/5890020.html
Copyright © 2020-2023  润新知