How to use JavaScript RegExp to resolve relative paths? -
i want implement utility method, can used resolve relative paths. method should implemented using javascript regexp, , algorithm required follows:
1) occurrences of "segment/../", segment complete path segment not equal "..", removed. removal of these path segments performed iteratively, removing leftmost matching pattern on each iteration, until no matching pattern remains.
2) if path ends "/..", complete path segment not equal "..", "/.." removed.
examples:
a/b/css/../../d ==> a/d a/b/c.ss/../../d ==> a/d a/b/css/../.. ==> a/ a/bss/../../../ ==> ../ ../../../ ==> ../../../
i have tried implement method:
var result = "a/b/c.ss/../../d"; while(result.indexof('..') >= 0) { var temp = result.replace(/([^\.\/]*)\/\.\.\/?/,''); if (temp == result){ break; } result = temp; }
but can't deal "a/b/c.ss/../../d", how can correct it?
please me out!
i wouldn't use regular expression. split path on /
, iterate on array , remove elements accordingly.
for example:
function resolve(path) { var parts = path.split('/'); var = 1; while (i < parts.length) { // if current part `..` , previous part different, remove // both of them if (parts[i] === '..' && > 0 && parts[i-1] !== '..') { parts.splice(i-1, 2); -= 2; } i++ } return parts.join('/'); }
Comments
Post a Comment