如何在javascript中获取URL参数的值?
我有一组URL,我想从中提取某个参数的值 例如:如何在javascript中获取URL参数的值?,javascript,regex,Javascript,Regex,我有一组URL,我想从中提取某个参数的值 例如: 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=fd
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
的值
有人能帮我吗
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
非常原始,但应该有效
细分:
[?&] # starts with a ? or &
g= # contains g and an equals
[^&]* # contains any character (except &) 0+ times
非常原始,但应该可以工作。使用此功能
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");
免责声明:来自的James Padolsey代码的无耻端口使用此功能
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");
免责声明:詹姆斯·帕多尔西的无耻之港
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];
}
试试这个:
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];
}
这应该只包含g的第一个值,而不是整个“g=blah”字符串
这应该只包含g的第一个值,而不是整个“g=blah”字符串。为什么要使用前导符号和?如果g是主要论点呢?我会用[?&]@CaNNaDaRk来代替它:事实上,我显然已经半睡半醒了。修正了,谢谢提醒。别忘了提到那个字符串。match返回一个数组,而不是字符串。在这种情况下,它将是一个单元素数组;如果你在正则表达式的末尾加上“g”标志,你将在数组中得到多个结果(一个好的程序员应该为这种可能性做好准备)。@CaNNaDaRk:考虑到这是一个散列爆炸,我怀疑是否需要进行检查。在这个例子中,我强调的是原语,为什么前面的符号是和?如果g是主要论点呢?我会用[?&]@CaNNaDaRk来代替它:事实上,我显然已经半睡半醒了。修正了,谢谢提醒。别忘了提到那个字符串。match返回一个数组,而不是字符串。在这种情况下,它将是一个单元素数组;如果你在正则表达式的末尾加上“g”标志,你将在数组中得到多个结果(一个好的程序员应该为这种可能性做好准备)。@CaNNaDaRk:考虑到这是一个散列爆炸,我怀疑是否需要进行检查。在这个例子中,我强调的是原语。看,或者。看,或者。