前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式格式化查询参数

正则表达式格式化查询参数

作者头像
李振
发布2021-11-26 11:53:27
5570
发布2021-11-26 11:53:27
举报
文章被收录于专栏:乱码李

记录一下,通过一行正则表达式和 replace 方法简单实现正则表达式格式化查询参数。

代码语言:javascript
复制
const url = 'https://lz5z.com/000/?a=123&b=456&c=%E4%B8%AD%E6%96%87'
/** 
 * 格式化查询字符串(正则实现) 
 * @param url url地址 
 * @return {Object} 格式化的json对象 
 */
function formatUrl(url) {
    const reg = /(?:[?&]+)([^&]+)=([^&]+)/g
    let data = {}

    function fn(str, key, value) {
        data[decodeURIComponent(key)] = decodeURIComponent(value)
    }
    url.replace(reg, fn)
    return data
}

console.log(formatUrl(url)) // { a: '123', b: '456', c: '中文' }

下次面试官问你的时候,你能答上来吗?😉😉😉

下面是 《JavaScript高级程序设计》 中给出的方案:

代码语言:javascript
复制
function getQueryStringArgs () {
    // 取得查询字符串并去掉开头的问号
    var qs = (location.search.length > 0 ? location.search.substring(1) : '')
    // 保存数据的对象
    var args = {}
    // 取得每一项
    var items = qs.length ? qs.split('&') : []

    for (var i = 0; i < items.length; i++) {
        var item = items[i].split('=')
        var name = decodeURIComponent(item[0])
        var value = decodeURIComponent(item[1])
        if (name.length) args[name] = value
    }
    return args
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档