用“#”替换URL中的倒数第二个“/”字符

时间:2014-06-22 14:10:58

标签: javascript regex replace

我有这个网址:

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/

5 个答案:

答案 0 :(得分:4)

在正则表达式下方会捕获前一个/符号之前的/

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

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 :(得分:4)

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

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

答案 2 :(得分:3)

试试这个:

var output = input.replace(/\/([^\/]+\/[^\/]*)$/, "#$1" )

/*
input => "http://localhost:8888/alain-pers/fr/oeuvres/architecture/"
output => "http://localhost:8888/alain-pers/fr/oeuvres#architecture/" 
*/

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

你可以这样做:

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