JS:从相对路径中删除前导斜杠,点

BD_*_*ign 1 javascript relative-path filepath

使用Javascript如何从相对路径中删除任何数量的"../"?

例如:

Before - '../../../folder1/folder2/my-file.php'
After  - 'folder1/folder2/my-file.php'

Before - '../folder1/my-file.php'
After  - 'folder1/my-file.php'
Run Code Online (Sandbox Code Playgroud)

我在这里和谷歌搜索了多个关键词,似乎找不到基于Javascript的解决方案,大多数是PHP,这不是我需要的.另外,如果可能的话,我想避免使用正则表达式解决方案.

任何帮助将不胜感激,谢谢!

T.J*_*der 5

另外,如果可能的话,我想避免使用正则表达式解决方案.

在JavaScript中,正则表达式可能是执行此操作的最佳方式; 但你可以用循环代替它:

var str = "../../../folder1/folder2/my-file.php";
var result = str;
while (result.substring(0, 3) === "../") {
    result = result.substring(3);
}
Run Code Online (Sandbox Code Playgroud)

使用正则表达式String#replace:

var str = "../../../folder1/folder2/my-file.php";
var result = str.replace(/^(?:\.\.\/)+/, "");
Run Code Online (Sandbox Code Playgroud)

该正则表达式表示:匹配字符串(^)的开头,然后匹配一个或多../个子字符串,并用""(例如,没有)替换它们.你需要的反斜杠在那里,因为两者.并/在正则表达式字面特殊字符,但我们希望他们实际上是.和/你的字串.该(?:___)构造将这三个字符组合在一起而不形成捕获组.

更多关于MDC上的正则表达式或(在规范中很清楚).