从网址获取价值

时间:2012-10-12 05:37:32

标签: javascript url

我的格式为http://localhost:8080/testURL/location/#/old/Ds~1016

值1016将根据所选页面进行更改..是否可以在javascript中从URL获取数字1016部分(基于所选页面)???

我尝试了这个功能

function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);

var results = regex.exec(window.location.search);
if (results == null)
    return "";
else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

4 个答案:

答案 0 :(得分:2)

试试这个:

regex = new RegExp("[0-9]*$");
regex.exec(window.location.hash);

要获取该号码,只需使用regex.exec(window.location.hash)[0],然后您可能需要检查它是否为4位宽。

答案 1 :(得分:2)

我猜你可以使用内置的window.location。如果没有regex,您可以这样做:

a = "http://localhost:8080/testURL/location/#/old/Ds~1016";
a.substring(a.indexOf("~")+1); // 1016

或者以更简单的方式,你可以使用它:

window.location.hash.split('~')[1]

你可以在这里看到小提琴:http://jsfiddle.net/DqzQF/

随意尝试所有网址。

答案 2 :(得分:2)

你也可以这样试试

window.location.href.split('~').pop(-1)

应该给你"1016"

虽然以下会更好

window.location.href.split('/').pop(-1).split('~').pop(-1)

确保它是你要拆分的最后一个“/”元素

<强>更新

如果是单一条件,我总是喜欢使用split(),因为即使regex在较长时间内提供更好的性能,代码也更容易理解。您可以检查正则表达式与分割here

的性能

答案 3 :(得分:1)

window.location.hash.split('~')[1]

<强>解释

我们先抓住哈希,#/old/Ds~1016window.location.hash

现在,我们split使用~哈希(我假设只在网址中出现一次)

split返回一个Ds位于0th索引且1016位于1st索引的数组。

所以,最后

window.location.hash.split('~')[1] returns `1016`