从url查询字符串获取具体的值
问题描述:
我有以下的URL,我想从它使用JavaScript获得“id”值。从url查询字符串获取具体的值
https://www.blabla.com/ebookedit?id=B0077RQGX4&commit=Go
我开始使用此代码:
var url = document.URL;
var id_check = /^\id...\E; // NOT SURE HERE
var final_id = new RegExp(id_check,url);
我想提取id为“B0077RQGX4”,并将其保存到,我会在以后修改的变量。我该怎么做,哪些功能我会在JavaScript中使用?
答
那么它是不是正则表达式,但你可以只是做
id=url.split('id=')[1].split('&')[0];
答
虽然你可以使用正则表达式来做到这一点,但如果你使用非正则表达式的方法,它可能会更容易和/或更一致。这是因为查询字符串可能有各种各样的布局(
id
值首先,最后或中间)。
编辑: @AdrianaVillafañe证明这可以用一个正则表达式轻松完成!我将在此留下此JS-only方法,因为它确实有效。
我喜欢使用此JavaScript方法从URL解析查询字符串并获取与所需名称匹配的第一个值。在你的情况下,“ID”将是name
参数。
// parses the query string provided and returns the value
function GetQueryVariable(query, name) {
if (query.indexOf("?") == 0) { query = query.substr(1); }
var pairs = query.split("&");
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i].split("=");
if (pair[0] == name) {
return pair[1];
}
}
return "";
}
要使用此方法,您需要传入URL的查询字符串部分和要获取的值的名称。如果要分析当前请求的URL,你可以这样做:
var value = GetQueryVariable(location.search, "id");
试图做到这一点的正则表达式将最有可能是不一致的,充其量试图处理的查询字符串的可能的变化时,布局。
答
我想出了这一点:
var final_id;
var url = document.URL;
var id_check = /[?&]id=([^&]+)/i;
var match = id_check.exec(url);
if (match != null) {
final_id = match[1];
} else {
final_id = "";
}
作品为:
https://www.blabla.com/ebookedit?id=B0077RQGX4&commit=Go
final_id = 'B0077RQGX4'
https://www.blabla.com/ebookedit?SomethingElse=Something&id=B0077RQGX4&commit=Go
final_id = 'B0077RQGX4'
https://www.blabla.com/ebookedit?commit=go&id=B0077RQGX4
final_id = 'B0077RQGX4'
https://www.blabla.com/ebookedit?commit=Go
final_id = ''
https://www.blabla.com/ebookedit?id=1234&Something=1&id=B0077RQGX4&commit=Go
final_id = '1234'
答
刚刚尝试这一点。
function getUrlVars()
{
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value)
{
vars[key] = value;
});
return vars;
}
function urlval()
{
var x=getUrlVars()["id"];
alert (x);
}
现在x将在ID给值B0077RQGX4
这假定'id'始终是第一个参数。 – kafuchau 2012-04-12 15:30:18
@kafuchau感谢您指出了这一点。 – qw3n 2012-04-12 15:33:44