Javascript 获取URL参数函数,该函数获取URL部分的值,如果为';有但没有价值?

Javascript 获取URL参数函数,该函数获取URL部分的值,如果为';有但没有价值?,javascript,regex,Javascript,Regex,我使用以下函数来获取URL参数 function gup(name, url) { name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]'); var results = new RegExp('[\\?&]'+name+'=?([^&#]*)').exec(url || window.location.href); return results == null ? null : results[1]; }

我使用以下函数来获取URL参数

function gup(name, url) {
  name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
  var results = new RegExp('[\\?&]'+name+'=?([^&#]*)').exec(url || window.location.href);
  return results == null ? null : results[1];
}
foreach($_GET as $Name => $Value) {
     echo '<input type="hidden" id="'.$Name.'" value="'.$Value.'">';
}
var parameterValue = document.getElementById('parameter').value;
例如,仅当参数具有值时,它才起作用

gup('a', 'http://example.com/page.php?a=1&b=2');
将返回1。但是如果我尝试

gup('a', 'http://example.com/page.php?a&b=2');

它返回null。我希望它返回true,因为参数“a”存在于该url中,即使它没有值,它仍然存在,并且gup()应该返回true。能帮我重写一下吗?我不太擅长正则表达式。

对于第二个示例,它实际上不返回
null
,而是返回一个空字符串

空字符串是假字符串,它们在布尔上下文中强制为
false
,因此您可以在三元函数的第二个分支中使用它

在那里,您知道某个内容已匹配(在
结果[1]
中),只有当匹配为falsy(空字符串)时,您才能返回
true


当页面加载时,使用PHP或您选择的任何服务器端语言输出隐藏的输入foreach GET参数

function gup(name, url) {
  name = name.replace(/[\[]/, '\\\[').replace(/[\]]/, '\\\]');
  var results = new RegExp('[\\?&]'+name+'=?([^&#]*)').exec(url || window.location.href);
  return results == null ? null : results[1];
}
foreach($_GET as $Name => $Value) {
     echo '<input type="hidden" id="'.$Name.'" value="'.$Value.'">';
}
var parameterValue = document.getElementById('parameter').value;

非常感谢。没想到这么简单。