Como puxar o nome do arquivo de uma URL usando javascript / jquery?

Uma determinada variável pode conter um caminho relativo ou um caminho absoluto. De qualquer forma, eu preciso ser capaz de puxar o nome do arquivo da variável:

http://sofpt.miximages.com/javascript/f /dir1/dir2/filename.gif 

A estrutura de diretórios também é arbitrária. Então, basicamente, dado qualquer um dos URLs acima (com estrutura de diretório arbirtrary) eu preciso puxar ‘filename.gif’. desde já, obrigado

 var index = yourstring.lastIndexOf("/") + 1; var filename = yourstring.substr(index); 

Caminho mais curto

 var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1); 
 var filename = url.match(/.*\/(.*)$/)[1]; 
 var filename= url.split('/').pop() 

Eu usaria uma expressão regular.

 [^/]*$ 

Seleciona tudo após a última barra até o final. Você pode expandi-lo para selecionar a extensão separadamente:

 /([^/]*?)(\.[^\./]*)?$ 
 var path = window.location.pathname; var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1]; 

Use isso no caso de você não querer que sua string de consulta faça parte do seu nome de arquivo (o que você provavelmente não faz).

 var URL = window.location.pathname; // Gets page name var page = URL.substring(URL.lastIndexOf('/') + 1); alert(page); 

Para os seus exemplos, a pesquisa por substring provavelmente será sua melhor opção.

No entanto, se os seus URIs são realmente complexos o suficiente, você pode tentar o parseUri Steven Levithan:

 parseUri(uri).file; 

Tem 2 modos e cada um tem a sua quota de peculiaridades, por isso não deixe de ver a demonstração .

 // Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1); 

Use uma expressão regular, algo ao longo destas linhas deve fazer o truque:

 [^/]+\.[^/]+ 

Embora isso não cubra todos os casos possíveis, deve ser mais do que adequado para a maioria dos casos. Você pode usar estes:

 var url = window.location.href; var regex = new RegExp("[^/]+\.[^/]+"); var fileName = regex.exec(url); 

espero que ajude

 var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0]; 

obrigado sam deng, parece funcionar, mas você tem um erro de digitação meu amigo:

 // Extract filename from current page. var filePath = window.location.pathname; var fileName = filePath.substr(filePath.lastIndexOf("/") + 1); 
  var pathnameArray = window.location.pathname.split("/"); var nameOfFile = pathnameArray[pathnameArray.length -1]; 

Provavelmente há alguma sobrecarga que eu não conheço quando considero fazer uma matriz versus usar o substrato que os outros mencionaram. Então talvez essa não seja uma ótima resposta, mas sim uma abordagem diferente para resolver o mesmo problema.

Se você url é assim:

 yourdomain.com/app_dev.php yourdomain.com/app_dev.php/article/2 

e você só quer puxar o nome do arquivo (/app_dev.php) para que você possa criar um link para sua página inicial, use isto:

 var filename = window.location.pathname.substr(0, window.location.pathname.indexOf("/", 1)); window.location = filename;