我想实现一个实用方法,可以用来解析相对路径。该方法应使用 JavaScript RegExp 实现,算法要求如下:
1) 删除所有出现的“段/../”,其中段是不等于“..”的完整路径段。迭代地执行这些路径段的移除,在每次迭代中移除最左边的匹配模式,直到没有匹配模式剩余。
2)如果路径以“/..”结尾,其中不等于“..”的完整路径段,则删除“/..”。
例子:
a/b/css/../../d ==> a/d
a/b/c.ss/../../d ==> a/d
a/b/css/../.. ==> a/
a/bss/../../../ ==> ../
../../../ ==> ../../../
我试图实现这个方法:
var result = "a/b/c.ss/../../d";
while(result.indexOf('..') >= 0)
{
var temp = result.replace(/([^\.\/]*)\/\.\.\/?/,'');
if (temp == result){
break;
}
result = temp;
}
但它不能处理“a/b/c.ss/../../d”,那我该如何纠正呢?
请帮帮我!