Этот ответ работает только в браузерной среде. Не подходит для узла.
function getFilename(url) {
const filename = decodeURIComponent(new URL(url).pathname.split('/').pop());
if (!filename) return 'index.html'; // some default filename
return filename;
}
function filenameWithoutExtension(filename) {
return filename.replace(/^(.+?)(?:\.[^.]*)?$/, '$1');
}
Для браузеров, не поддерживающих new URL
, вы можете захотеть:
var a = document.createElement('a');
a.href = url;
var pathname = a.pathname;
Вот две функции:
- первый получить имя файла из URL
- второй получить имя файла без расширения из полного имени файла
Для парсинга URL лучшим выбором будет новый объект URL
. Также обратите внимание, что URL не всегда содержит имя файла.
Примечание: Эта функция пытается разрешить имя файла из URL. Но это НЕ гарантирует, что имя файла допустимо и подходит для использования:
- Некоторые ОС запрещают определенный символ в имени файла (например,
:
в Windows, \0
в большинстве ОС, ...);
- Некоторые имена файлов могут быть зарезервированы ОС (например, CON в Windows);
- Некоторое имя файла может сделать пользователя недовольным его обработкой (например, файл с именем --help в Linux)