【问题标题】:JQuery check and remove slash from the end of URL readJQuery 检查并从 URL 读取的末尾删除斜杠
【发布时间】:2011-06-12 00:57:44
【问题描述】:

在一个 jQuery 脚本中,我有一行代码可以获取当前 URL 的字符串:

var target = $(this).attr('href');

此脚本中的代码能否检查 URL 字符串末尾是否有斜杠。如果它存在然后删除它?有什么方法可以推荐吗?

【问题讨论】:

  • 我们很清楚:“/”是一个斜杠,而“\”是一个反斜杠

标签: javascript jquery string


【解决方案1】:

我会这样做:

 target = target.replace(/\/$/, '');

现在,如果您需要担心查询字符串的存在:

 <a href='http://foo.bar.com/something/?param=xyz'>hi</a>

然后事情变得有点棘手。使用正则表达式解析 URL 可能是可能的,但它非常混乱。如果您能侥幸成功,请缩小您的 URL 的可能性,这样您就不必使用一些巨大的“官方”模式。

【讨论】:

  • 更好,继续jquery链式,做var target = $(this).attr('href').replace(/\/$/,'');
  • @Martin Jespersen 是的,在实际代码中是(可能)我会做的,但我希望这个例子在“好”部分方面非常清楚。
  • 如何删除文本开头的斜线?
【解决方案2】:

假设您的意思是斜线,一种可能的解决方案是:

var l = target.length - 1;
if(target.lastIndexOf('/') === l) {
    target = target.substring(0, l);
}

【讨论】:

    【解决方案3】:

    这对于带有查询字符串的 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));
        }    
    }
    

    【讨论】:

      【解决方案4】:

      您可以使用如下的正则表达式:

      target.replace(//+((\?|#).*)?$/, '$1');

      应该在 URL 的末尾保留查询字符串或 url 片段。

      【讨论】:

        猜你喜欢
        • 2016-12-22
        • 1970-01-01
        • 2021-09-07
        • 2022-11-02
        • 1970-01-01
        • 1970-01-01
        • 2018-02-18
        • 2014-06-19
        • 2012-10-27
        相关资源
        最近更新 更多