2015-12-14 2 views
2

У меня есть путь конкатенированного файла к документу на сервере, например.Javascript replace() regexp: модификатор вложения

http://test:[email protected]:5555/../test/directory/../name/sub/sub/../../file.js 

и по неизвестной причине запрос XHR я посылаю к этому «URL» возвращает ошибку 404, в то время как Chrome, когда я даю ему тот же путь, что делает

http://test:[email protected]:5555/test/name/file.js 

от него и возвращается документ в порядке. Теперь я ищу поиск/замену regexp javascript, который может «очистить» путь.

Это то, что я пытался до сих пор:

console.log(
    "http://test:[email protected]:5555/../test/directory/../name/sub/sub/../../file.js" 
    .replace(/([^\/])\/[^\/]*\/..\//g,'$1/') 
); 

регулярное выражение работ для вложенных матчей, за исключением: /sub/dir/../../ заменяется на /sub/../, должно быть /.

Имеется ли модификатор вложенности?

+0

Вы можете продолжить повторное использование _RegExp_ в цикле до тех пор, пока не увидите больше изменений 'while (bar! == (foo = bar.replace (re))) bar = foo;' –

+0

Просьба дать некоторую обратную связь, если мой ответ сработал для вас –

ответ

2

Вы можете попробовать этот подход:

var url = "http://test:[email protected]:5555/../test/directory/../name/sub/sub/../../file.js"; 
 

 
var new_url = url.replace(/(^.*?(?=\/\.\.))|(?:\/\.\.)+(\/[^\/]+)|./g, '$1$2'); 
 

 
document.write(new_url);

Regex с цветами here.

Надеюсь, это поможет.

Смежные вопросы