这似乎是一个没有明确的解决方案,因为没有具体的定义,你想从URL的末尾删除什么。
这将很容易删除查询参数(第一个例子)。
这将很容易规范化尾部斜线(最后两个例子)。
如果这是您一直想要的,那么删除最后一条路径会很容易,但除非您愿意在URL的末尾添加一些可以区分/index.php
和/blah
的规则,以便算法知道何时删除一个,但不是另一个,你所要求的是不可能的。由于您已经定义了该问题,因此代码无法知道是否应该删除http://localhost:8080/blah/blah
末尾的 blah
。
例如,此代码将删除查询参数和URL的最后一部分,但这只适用于四个示例中的三个,但在最后删除的内容中存在歧义:
function cleanURL(url) {
return(url.replace(/\?.*$/, "").replace(/\/[^\/]*$/, "") + "/");
}
在这里它正在你的所有四个例子上运行:http://jsfiddle.net/jfriend00/2Q4Ue/。它返回这些结果为四种情况:
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/
对于最后一个网址,你可以看到,该算法在年底作为文件名标识/blah
并删除它,因为没有办法知道这是部分路径或文件名。
如果你愿意制定一个新的规则,即文件名必须有文件扩展名,最后一个路径名没有文件名时不会有扩展名,那么可以编写这样一个算法来处理最后一条案件。
OK,一个新的规则,在最后一个文件名是在它的一段话,那么,你可以使用这个:http://jsfiddle.net/jfriend00/LpauM/,并产生这样的结果:这是显示在此小提琴
function cleanURL(url) {
return(url.replace(/\?.*$/, "")
.replace(/\/[^\/]*\.[^\/]*$/, "")
.replace(/\/$/, "") + "/");
}
四个测试网址:
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
http://localhost:8080/blah/blah/
的
可能重复[?我如何解析URL到JavaScript的主机名和路径(http://stackoverflow.com/questions/736513/how-do-i-parse -a-url-into-hostname-and-path-in-javascript) –