用正则表达式获取url变量

时间:2011-03-08 20:09:09

标签: javascript regex

我有以下网址

http://www.test.info/link/?url=http://www.site2.com

如何在javascript中使用正则表达式获取url参数的值?

由于

5 个答案:

答案 0 :(得分:11)

function extractUrlValue(key, url)
{
    if (typeof(url) === 'undefined')
        url = window.location.href;
    var match = url.match('[?&]' + key + '=([^&]+)');
    return match ? match[1] : null;
}

如果您尝试匹配访问者当前所在网页的“网址”,则可以使用以下方法:

var value = extractUrlValue('url');

否则您可以传递自定义网址,例如

var value = extractUrlValue('url', 'http://www.test.info/link/?url=http://www.site2.com

答案 1 :(得分:10)

查看http://rubular.com以测试正则表达式:

url.match(/url=([^&]+)/)[1]

答案 2 :(得分:3)

可能要检查一下:http://snipplr.com/view/799/get-url-variables/(无法使用regEx)

这个确实使用regEx:http://www.netlobo.com/url_query_string_javascript.html

function gup( name )
{
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regexS = "[\\?&]"+name+"=([^&#]*)";
      var regex = new RegExp( regexS );
      var results = regex.exec( window.location.href );
      if( results == null )
        return "";
      else
        return results[1];
}


var param = gup( 'var' );

答案 3 :(得分:2)

嗯,首先,是整个查询字符串?如果是这样,你需要做的就是分开=:

url.split('=')[1];

否则,您可能想要使用Jordan的Regex。

答案 4 :(得分:0)

答案代码:

function extractUrlValue(key, url)
{
    if (typeof(url) === 'undefined')
        url = window.location.href;
    var match = url.match('[?&]' + key + '=([^&#]+)');
    return match ? match[1] : null;
}

如果key是网址中的最后一个参数,之后有一个锚点 - 它在此处输入代码将返回value#anchor作为值。正则表达式#中的'[?&]' + key + '=([^&#]+)'会阻止这种情况发生。