我有一个连接到服务器上文档的连接文件路径,例如
http://test:1234@192.168.0.12:5555/../test/directory/../name/sub/sub/../../file.js
由于某种未知原因,我发送给那个" URL"的XHR请求返回错误404,而Chrome,当我给他相同的路径,使
http://test:1234@192.168.0.12:5555/test/name/file.js
从它并返回文件好。现在我正在寻找一个javascript regexp搜索/替换,可以"清理"路径。
这是我到目前为止所尝试的:
console.log(
"http://test:1234@192.168.0.12:5555/../test/directory/../name/sub/sub/../../file.js"
.replace(/([^\/])\/[^\/]*\/..\//g,'$1/')
);
正则表达式除嵌套匹配外有效:/sub/dir/../../
已替换为/sub/../
,应为/
。
是否有可用的嵌套修改器?
答案 0 :(得分:2)
您可以尝试这种方法:
var url = "http://test:1234@192.168.0.12:5555/../test/directory/../name/sub/sub/../../file.js";
var new_url = url.replace(/(^.*?(?=\/\.\.))|(?:\/\.\.)+(\/[^\/]+)|./g, '$1$2');
document.write(new_url);

正则表达式使用颜色here。
希望它有所帮助。