Я пытаюсь разобрать имя файла по URL (например, .tar.gz или .zip). Например,
*URL:* https://files.pythonhosted.org/packages/00/51/f3afa784d73d1f35dce99f6138eaa779e2098a8dde4e7085ecf6295254bb/google-cloud-storage-1.13.0.tar.gz *Desired Output:* google-cloud-storage-1.13.0 *URL:* https://files.pythonhosted.org/packages/00/51/f3afa784d73d1f35dce99f6138eaa779e2098a8dde4e7085ecf6295254bb/google-cloud-storage-1.13.0.zip *Desired Output:* google-cloud-storage-1.13.0
Пока что с Javascript у меня есть следующее:
tar_name = url.split('/').pop().replace(/\..+$/, '');
, которое не работает, если в имени файла есть точки.
Любая помощь относительно того, как получить имя файла из такого URL-адреса с javascript, приветствуется. Спасибо.
Можно указать один вариант c и заменить деталь, заканчивающуюся на .tar.gz или .zip, пустой строкой.
.tar.gz
.zip
(?:\.tar\.gz|\.zip)$
Regex demo
["https://files.pythonhosted.org/packages/00/51/f3afa784d73d1f35dce99f6138eaa779e2098a8dde4e7085ecf6295254bb/google-cloud-storage-1.13.0.tar.gz", "https://files.pythonhosted.org/packages/00/51/f3afa784d73d1f35dce99f6138eaa779e2098a8dde4e7085ecf6295254bb/google-cloud-storage-1.13.0.zip" ].forEach(url => { url = url.split('/').pop().replace(/(?:\.tar\.gz|\.zip)$/, ''); console.log(url); });
Или вы можете, например, захватить цифры, разделенные точками в конце, и сопоставить символы az, следующие за сохранением группы 1 в замене.
(\d+(?:\.\d+)+)\.[a-z]+(?:\.[a-z]+)*$
["https://files.pythonhosted.org/packages/00/51/f3afa784d73d1f35dce99f6138eaa779e2098a8dde4e7085ecf6295254bb/google-cloud-storage-1.13.0.tar.gz", "https://files.pythonhosted.org/packages/00/51/f3afa784d73d1f35dce99f6138eaa779e2098a8dde4e7085ecf6295254bb/google-cloud-storage-1.13.0.zip" ].forEach(url => { url = url.split('/').pop().replace(/(\d+(?:\.\d+)+)\.[a-z]+(?:\.[a-z]+)*$/, "$1"); console.log(url); });