1

我有一个格式的网址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

4 回答 4

2

试试这个:

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

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

于 2012-10-12T05:41:29.520 回答
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/

随意尝试所有的 URL。

于 2012-10-12T05:42:54.467 回答
2

你也可以这样试试

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

那应该给你"1016"

虽然下面会更好

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

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

更新

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

于 2012-10-12T05:43:35.013 回答
1

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

解释:

我们首先抓取哈希,即#/old/Ds~1016 通过window.location.hash

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

Dssplit 返回一个带有at 0thindex 和1016at index的数组1st

所以,最后

window.location.hash.split('~')[1] returns `1016`
于 2012-10-12T05:50:54.290 回答