我有这个网址:
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/
答案 0 :(得分:4)
在正则表达式下方会捕获前一个/
符号之前的/
。
.*(\/).*?\/$
您的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");