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