我们有一个javascript函数,用于在内部跟踪页面统计信息。但是,它多次报告的URL包括搜索结果页面的页码,我们宁愿不报告这些页面。报告的页面格式为:
http://www.test.com/directory1/2
http://www.test.com/directory1/subdirectory1/15
http://www.test.com/directory3/1113
相反,我们希望以上报告为:
http://www.test.com/directory1
http://www.test.com/directory1/subdirectory1
http://www.test.com/directory3
请注意,上面编号的“目录”和“子目录”名称仅用于示例目的,实际的子目录名称都不同,不一定包含目录名称末尾的数字,也可以是多个水平很深。
目前,我们的JavaScript函数使用以下代码生成这些URL:
var page = location.hostname+document.location.pathname;
我认为我们需要将JavaScript替换功能与一些正则表达式结合使用,但我完全不知道它会是什么样子。任何帮助将不胜感激!
提前致谢!
答案 0 :(得分:4)
我想你想要这个:
var page = location.href.substring(0,location.href.lastIndexOf("/"));
答案 1 :(得分:0)
我认为您需要使用带有重写规则的.htaccess来更改网址的外观,但我仍然希望查看这是否可用于javascript。当我发现更多时会重新发布
编辑*
lastIndexOf只会给你一个位置,因此你仍然需要替换。例如:
不幸的是,我的编码并不是那么先进,所以在其他答案中可能会有更高效的编码。对于我的初步答复给您带来的任何不便,我们深表歉意。var temp = page.substring(page.lastIndexOf(“/”),page.length-1);
page = page.replace(temp,“”);
答案 2 :(得分:0)
您可以做的是找到“/”的最后一个索引,然后使用子字符串函数。
答案 3 :(得分:0)
如果您只是删除最后一个斜杠+内容,则不确定是否需要正则表达式。
http://www.w3schools.com/jsref/jsref_lastIndexOf.asp
我可能会用它来搜索最后一个“/”字符,然后从字符串的开头到该索引执行一个子字符串。
答案 4 :(得分:0)
您可以使用正则表达式:
document.location.pathname.replace(/\/\d+$/, "");
与substring
和lastIndexOf
解决方案不同,如果路径只包含数字,则会删除路径的末尾。
答案 5 :(得分:0)
这个怎么样:
var page = location.split("/");
page.pop();
page = page.join("/");