如何在javascript中获取URL参数的值?

时间:2011-08-30 13:00:57

标签: javascript regex

我有一组网址,我想从中提取某个参数的值。

例如:

http://example.com/#!/dp/dp.php?g=4346&h=fd34&kl=45fgh&bl=nmkh
http://example.com/#!/dp/dp.php?h=fd34&g=4346&kl=45fgh&bl=nmkh
http://example.com/#!/dp/dp.php?h=fd34&kl=45fgh&g=4346&bl=nmkh
http://example.com/#!/dp/dp.php?h=fd34&kl=45fgh&bl=nmkh&g=4346

我想使用javascript(regex)来获取参数g的值。

有人可以帮我这个吗?

6 个答案:

答案 0 :(得分:3)

var gMatches = url.match(/[?&]g=[^&]*/);
var g = gMatches[1];

细分:

[?&]         # starts with a ? or &
g=           # contains g and an equals
[^&]*        # contains any character (except &) 0+ times

非常原始但应该有用。

答案 1 :(得分:2)

var url = window.location.href;
getParameter("g=", url, "&");

function getParameter(parameter, buffer, delimiter)
{
   var start = buffer.indexOf(parameter);
   if (start == -1)
      return null;
   var data = buffer.slice(start);
   if(data.match(delimiter) != null)
      var end = data.indexOf(delimiter);
   else
      var end = data.length;
   data = data.slice(0, end);
   var eq = data.indexOf("=");
   data = data.slice(eq+1);
   return data;
}

答案 2 :(得分:1)

使用此功能。

function getParameterByName(name) {

    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(window.location.search);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));

}

称之为

var url = "http://domain.com/#!/dp/dp.php?g=4346&h=fd34&kl=45fgh&bl=nmkh";
var parm =  getParameterByName("g");

免责声明:来自http://james.padolsey.com/javascript/bujs-1-getparameterbyname/ James Padolsey 代码的无耻端口

答案 3 :(得分:1)

试试这个:

var url = window.location.href;
var name = 'g';
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var results = new RegExp("[\\?&]" + name + "=([^&#]*)").exec(url);
if (results != null)
{
    var g_url_value = results[1];
}

答案 4 :(得分:1)

var str = 'http://domain.com/#!/dp/dp.php?g=4346&h=fd34&kl=45fgh&bl=nmkh';
var reg = /(\&|\?)g=([^&]+)&?/;
console.log(str.match(reg)[2]);

答案 5 :(得分:1)

var results = new Array;
results = url.match(/[\?\&]g=([^&]*)/);

这应该只包含g的第一个值,而不是整个“g = blah”字符串。