我有以下网址,我希望获得" id"使用JavaScript的价值。
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中使用哪些函数?
答案 0 :(得分:17)
我想出了这个:
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'
答案 1 :(得分:4)
虽然您可以使用Regex执行此操作,但如果您使用非正则表达式方法,它可能会更容易和/或更一致。这种情况就是这样,因为查询字符串可以有多种布局( id
值的第一个,最后一个或中间位置。
编辑: @AdrianaVillafañe证明这可以通过正则表达式轻松完成!我将在这里留下这个仅限JS的方法,因为它确实有效。
我喜欢使用此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");
尝试在正则表达式中执行此操作时,在尝试处理查询字符串布局的可能变体时,最有可能是不一致的。
答案 2 :(得分:1)
试试这个。
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
答案 3 :(得分:0)
嗯,这不是正则表达式,但你可以做到
id=url.split('id=')[1].split('&')[0];
答案 4 :(得分:0)
这样的事情应该有效。
var url = document.URL;
var regex = new RegExp("id=(.+)&");
var id = url.match(regex)[1];
示例jsfiddle here。
答案 5 :(得分:0)
以下方法效果很好,而且比我找到的大多数解决方案更容易理解。
<script>
//Pulls the variables from a URL and saves them
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp('&'+q+'=([^&]*)','i');
return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}
//Get the variables value
var urlvariablevalue = $_GET('id');
//Display the Value of the id from the URL
document.write(urlvariablevalue);
</script>