【发布时间】:2011-06-12 00:57:44
【问题描述】:
在一个 jQuery 脚本中,我有一行代码可以获取当前 URL 的字符串:
var target = $(this).attr('href');
此脚本中的代码能否检查 URL 字符串末尾是否有斜杠。如果它存在然后删除它?有什么方法可以推荐吗?
【问题讨论】:
-
我们很清楚:“/”是一个斜杠,而“\”是一个反斜杠
标签: javascript jquery string
在一个 jQuery 脚本中,我有一行代码可以获取当前 URL 的字符串:
var target = $(this).attr('href');
此脚本中的代码能否检查 URL 字符串末尾是否有斜杠。如果它存在然后删除它?有什么方法可以推荐吗?
【问题讨论】:
标签: javascript jquery string
我会这样做:
target = target.replace(/\/$/, '');
现在,如果您需要担心查询字符串的存在:
<a href='http://foo.bar.com/something/?param=xyz'>hi</a>
然后事情变得有点棘手。使用正则表达式解析 URL 可能是可能的,但它非常混乱。如果您能侥幸成功,请缩小您的 URL 的可能性,这样您就不必使用一些巨大的“官方”模式。
【讨论】:
var target = $(this).attr('href').replace(/\/$/,'');
假设您的意思是斜线,一种可能的解决方案是:
var l = target.length - 1;
if(target.lastIndexOf('/') === l) {
target = target.substring(0, l);
}
【讨论】:
这对于带有查询字符串的 URL 也应该是安全的,并且它不使用正则表达式......
var urlEnd = target.indexOf("?");
if(urlEnd == -1){
urlEnd = target.length;
}
// Don't bother doing anything if the URL is empty
if (urlEnd > 0){
if (target[urlEnd - 1] == "/"){
$(this).attr('href', target.substr(0, urlEnd-1) + target.substr(urlEnd));
}
}
【讨论】:
您可以使用如下的正则表达式:
target.replace(//+((\?|#).*)?$/, '$1');
应该在 URL 的末尾保留查询字符串或 url 片段。
【讨论】: