面试题:
将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