我正在尝试从此网址获取查询和过滤值:
http://xyz/search.page?query=apple&filter=all
使用此功能:
getParameters: function(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(([^&#]*)=|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(unescape(results[2].replace(/\+/g, " ")));
}
它将返回query = apple但是如果我们有像apple#或apple&它不会考虑那些仍将归还苹果的特殊性格。 但对于所有其他特殊人物,如!,@,*这将返回苹果!或苹果@等 有人可以帮助我获得#和&的正确结果也, 提前谢谢。
答案 0 :(得分:0)
如果可能的话,最好使用浏览器的解析器,除非你在NodeJS中运行。
以下是您的功能的快速实现:
function getParameters(name, url) {
var parser = document.createElement('a');
parser.href = url;
var vars = parser.search.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (decodeURIComponent(pair[0]) == name) {
return decodeURIComponent(pair[1]);
}
}
return null;
}
console.log(getParameters("filter", "http://xyz/search.page?query=apple&filter=all"));