我的格式为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, " "));
}
答案 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]
随意尝试所有网址。
答案 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~1016
按window.location.hash
现在,我们split
使用~
哈希(我假设只在网址中出现一次)
split返回一个Ds
位于0th
索引且1016
位于1st
索引的数组。
所以,最后
window.location.hash.split('~')[1] returns `1016`