Удалить последний каталог по URL-адресу

Я пытаюсь удалить последнюю часть каталога URL. Мой URL-адрес выглядит следующим образом:

https://my_ip_address:port/site.php?path=/path/to/my/folder.

При нажатии на кнопку я хочу изменить это на

https://my_ip_address:port/site.php?path=/path/to/my. (Удалите последнюю часть).

Я уже пробовал window.location.replace(/\/[A-Za-z0-9%]+$/, ""), что приводит к

https://my_ip_address:port/undefined.

Какое регулярное выражение следует использовать для этого?

Ответы

Ответ 1

Объяснение: Explode by "/", удалите последний элемент с pop, снова присоединитесь к "/".

function RemoveLastDirectoryPartOf(the_url)
{
    var the_arr = the_url.split('/');
    the_arr.pop();
    return( the_arr.join('/') );
}

см. скрипку http://jsfiddle.net/GWr7U/

Ответ 2

С помощью этого кода удалите последний элемент из URL-ссылки.

url.substring(0, url.lastIndexOf('/'));

Ответ 3

Вот код, который корректно обрабатывает /, "", foo и /foo (возвращая /, "", foo и / соответственно):

function parentDirectory(dir: string): string {
  const lastSlash = dir.lastIndexOf('/');
  if (lastSlash === -1) {
    return dir;
  }
  if (lastSlash === 0) {
    return '/';
  }
  return dir.substring(0, lastSlash);
}

Просто удалите :string для Javascript. Может быть, вы хотите другое поведение, но вы должны хотя бы рассмотреть эти крайние случаи.