Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript replace()regexp:嵌套修饰符_Javascript_Regex - Fatal编程技术网

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时不再看到任何更改