在一个 jQuery 脚本中,我有一行代码可以获取当前 URL 的字符串:
var target = $(this).attr('href');
这个脚本中的代码能否检查URL字符串末尾是否有斜杠。如果存在,则将其删除?您推荐的方式是什么?
var target = $(this).attr('href');
这个脚本中的代码能否检查URL字符串末尾是否有斜杠。如果存在,则将其删除?您推荐的方式是什么?
我会这样做:
target = target.replace(/\/$/, '');
如果您需要考虑查询字符串的存在:
<a href='http://foo.bar.com/something/?param=xyz'>hi</a>
然后事情就变得有点棘手了。使用正则表达式解析URL可能是可行的,但很杂乱。如果可以这样做,缩小你的URL的可能性范围,这样你就不必使用一些巨大的“官方”模式。
var target = $(this).attr('href').replace(/\/$/,'');
。 - Martin Jespersenvar 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));
}
}
假设你指的是斜杠,一种可能的解决方案如下:
var l = target.length - 1;
if(target.lastIndexOf('/') === l) {
target = target.substring(0, l);
}
target.replace(//+((\?|#).*)?$/, '$1');
这样可以保留URL末尾的查询字符串或URL片段。