【问题标题】:Replace second to last "/" character in URL with a '#'将 URL 中倒数第二个“/”字符替换为“#”
【发布时间】:2014-08-12 16:13:15
【问题描述】:

我有这个网址:

http://localhost:8888/alain-pers/fr/oeuvres/architecture/

我想用# 替换倒数第二个/(我需要最后一个/)并得到以下输出:

http://localhost:8888/alain-pers/fr/oeuvres#architecture/

我用indexOf()、lastIndexOf() 和substr() 尝试了很多东西,但我无法得到我想要的结果。我也无法让任何正则表达式解决方案正常工作。

请注意,有时链接看起来像这样,也带有-:

http://localhost:8888/alain-pers/fr/oeuvres/art-contemporain/

【问题讨论】:

    标签: javascript regex replace


    【解决方案1】:

    您可以使用这个基于前瞻的正则表达式:

    var s ='http://localhost:8888/alain-pers/fr/oeuvres/architecture/';
    var r = s.replace(/\/(?=[^/]*\/[^/]*$)/, '#');
    //=> http://localhost:8888/alain-pers/fr/oeuvres#architecture/
    

    【讨论】:

    • @AvinashRaj:打开浏览器控制台并按原样粘贴代码。或使用JSFiddle、JSBin、js.do、CodePen 或类似网站。
    • 只需按下ctrl-shift-C 即可打开Firebug 或开发人员工具控制台,您可以在其中实时测试任何Javascript 代码。
    【解决方案2】:

    下面的正则表达式将捕获/,它就在最后一个/符号之前。

    .*(\/).*?\/$
    

    DEMO

    您的 javascript 代码将是,

    var s ='http://localhost:8888/alain-pers/fr/oeuvres/architecture/';
    var r = s.replace(/(.*)(\/)(.*?\/$)/, "$1#$3");
    //=>http://localhost:8888/alain-pers/fr/oeuvres#architecture/
    

    【讨论】:

    • +1 是的,做得很好,展示得很好。 :) 修正了一个小错字。
    【解决方案3】:

    试试这个:

    var output = input.replace(/\/([^\/]+\/[^\/]*)$/, "#$1" )
    
    /*
    input => "http://localhost:8888/alain-pers/fr/oeuvres/architecture/"
    output => "http://localhost:8888/alain-pers/fr/oeuvres#architecture/" 
    */
    

    【讨论】:

    • // 用于单行和 /* */ 用于多行 cmets :)
    • 是的,以为它只适用于 css
    【解决方案4】:

    这样的事情怎么样:/(\/)([\w-]+\/$)/

        "http://localhost:8888/alain-pers/fr/oeuvres/architecture/"
         .replace(/(\/)(\w+\/$)/,"#$2"); 
    //outputs "http://localhost:8888/alain-pers/fr/oeuvres#architecture/"
    

    【讨论】:

    • 如果输入为http://localhost:8888/alain-pers/fr/oeuvres/archi-tecture/则不起作用
    【解决方案5】:

    你可以这样做:

    var str = "http://localhost:8888/alain-pers/fr/oeuvres/architecture/";
    str = str.replace(/\/(\w+)(\/)?$/,"#$1$2");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多