Javascript replace()regexp:嵌套修饰符
我有一个连接到服务器上文档的文件路径,例如Javascript replace()regexp:嵌套修饰符,javascript,regex,Javascript,Regex,我有一个连接到服务器上文档的文件路径,例如 http://test:1234@192.168.0.12:5555/../test/directory/../name/sub/sub/../../file.js 出于某种未知的原因,我发送给那个“URL”的XHR请求返回错误404,而Chrome,当我给他相同的路径时,会发出错误404 http://test:1234@192.168.0.12:5555/test/name/file.js 然后返回文档。现在我正在搜索一个javascript
http://test:1234@192.168.0.12:5555/../test/directory/../name/sub/sub/../../file.js
出于某种未知的原因,我发送给那个“URL”的XHR请求返回错误404,而Chrome,当我给他相同的路径时,会发出错误404
http://test:1234@192.168.0.12:5555/test/name/file.js
然后返回文档。现在我正在搜索一个javascript regexp search/replace,它可以“清理”路径
这就是我迄今为止所尝试的:
console.log(
"http://test:1234@192.168.0.12:5555/../test/directory/../name/sub/sub/../../file.js"
.replace(/([^\/])\/[^\/]*\/..\//g,'$1/')
);
除了嵌套匹配之外,regexp可以工作:/sub/dir/../../
替换为/sub/../
,应该是/
是否有嵌套修改器可用?您可以尝试以下方法:
var url=”http://test:1234@192.168.0.12:5555/。/test/directory/。/name/sub/sub/。/../file.js”;
var new\u url=url.replace(/(^.*?(?=\/\.\)))\(?:\/\.\)+(\/[^\/]+)。/g,$1$2');
文件写入(新的url)
您可以继续在循环中重新运行RegExp,直到(bar!==(foo=bar.replace(re)))bar=foo时不再看到任何更改如果我的答案对你有用,请给出一些反馈