Url查询字符串到Object

时间:2012-04-22 16:37:05

标签: javascript regex

我有下面的函数,它将查询放入一个对象。它工作,但添加了对象的网址,我不是真正的正则表达式savy足以找出如何删除网址,只包括变量。

function urlToObj(url)
{
        var obj = {};
        url.replace(
            new RegExp("([^?=&]+)(=([^&]*))?", "g"),
            function($0, $1, $2, $3) { obj[$1] = $3; }
        );

        return obj;
}

E.g。

url = http://www.example.com/hello/world.php?var1=1&var2=2
url = http://www.example.com/hello/world.asp?var1=1&var2=2
url = http://www.example.com/hello/world?var1=1&var2=2

obj = urlToObj(url);

输出

obj { var1="1", var2="2", http://www.example.com/hello/world.php="" }
obj { var1="1", var2="2", http://www.example.com/hello/world.asp="" }
obj { var1="1", var2="2", http://www.example.com/hello/world="" }

我希望删除网址,使其看起来像这样

obj { var1="1", var2="2" }

我出错的任何例子和信息都会很棒。

由于

2 个答案:

答案 0 :(得分:0)

此扩展创建单个查询字符串对象,以便快速,可读地查询字符串修改和创建。这个插件提供了一种简单的方法来获取页面的查询字符串,并用很少的代码创建它的修改版本。

http://archive.plugins.jquery.com/project/query-object

答案 1 :(得分:0)

一些黑客怎么办? : - )

function urlToObj ( url ) {
    var obj = {};
    url.replace(
        new RegExp("([^?=&]+)(=([^&]*))?", "g"),
        function($0, $1, $2, $3) { obj[$1] = $3; }
    );

    // Now, you know you've got an empty string for your url
    // So let's loop through the object and remove this property
    for ( var prop in obj ) {

        // You only want the objects properties, nothing inherited
        if ( obj.hasOwnProperty( prop ) ) {

            // If it's an empty string
            if ( obj[ prop ] === '' ) {

                // Delete it!
                delete obj[ prop ]
            }
        }
    }
    return obj;
}