【问题标题】:Parsing URL parameters with regular expression使用正则表达式解析 URL 参数
【发布时间】:2012-11-30 22:31:27
【问题描述】:

我有一个与 example.com/?id[]=15029&id[]=18711&foo=bar#MyTab 类似的网址

我想获取url中的所有id

var str = window.location.search;
var result = {};
str.replace(/([^?=&]+)(?:[&#]|=([^&#]*))/g, function (match, key, value) {
    result[key] = value || 1;
});
result;

以上代码只返回最后一个id参数。

如何改进它以获取数组中的所有 id?

【问题讨论】:

  • 为什么是正则表达式? split('&').forEach,完成。
  • 看看我的正则表达式如何处理#
  • 看看this的帖子。
  • @Mithun location.search 根本不包括 location.hash
  • @Mike Corcoran 那里没有答案处理[] case

标签: javascript regex url


【解决方案1】:

知道了

function getUrlParam (paramName) {
    var str = window.location.search;
    var result = {};
    str.replace(/([^?=&]+)(?:[&#]|=([^&#]*))/g, function (match, key, value) {
        if (key.indexOf("[]") !== -1) {
            key = key.replace(/\[\]$/, "");
            if(!(result[key])) {
                result[key] = new Array();
            }
            result[key].push(value);
        } else {
            result[key] = value || 1;
        }
    });

    if(result[paramName]){
        return result[paramName];
    } else {
        return '';
    }
};
getUrlParam('id')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 2011-10-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多