url地址截取

面试题:

将let url = 'https://www.baidu.com/s?wd=js&rsv_spt=1',截取为{wd: "js", rsv_spt: "1"}

第一种方法--字符串拆分

所用到方法:

indexOf检测出当前字符在字符串中第一次出现的索引,若不存在返回-1

split按照某个字符串进行分割,返回分割后的数组

        let url = 'https://www.baidu.com/s?wd=js&rsv_spt=1'
        function queryURLParameter(url) {
            const obj = {}
            if (url.indexOf('?') < 0) return obj
            url = url.split('?')[1]
            urlArr = url.split('&')
            urlArr.forEach(function(item){
                let newArr = item.split('=')
                obj[newArr[0]] = newArr[1]
            })
            return obj
        }
        console.log(queryURLParameter(url))

第一种方法--利用正则解析法

        let url = 'https://www.baidu.com/s?wd=js&rsv_spt=1'
        function queryURLParameter(url){
            let reg = /([^?&=]+)=([^?&=]+)/g
            let obj = {}
            url.replace(reg,function(){
                obj[arguments[1]] = arguments[2]
            })
            return obj
        }
        console.log(queryURLParameter(url))

其中的回调函数就是当满足上面正则,有几个执行几次

我发现了”^”这个字符在中括号”[]”中被使用的话就表示字符类的否定,如果不是的话就是表示限定开头。我这里说的是直接在”[]”中使用,不包括嵌套使用。 
其实也就是说”[]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。

加油!

原文地址:https://www.cnblogs.com/xufeng1994/p/10422685.html