Javascript replace()regexp:嵌套修饰符

时间:2015-12-14 10:26:50

标签: javascript regex

我有一个连接到服务器上文档的连接文件路径,例如

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/../,应为/

是否有可用的嵌套修改器?

1 个答案:

答案 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

希望它有所帮助。