tags:

views:

52

answers:

4

Hello, could some one recommend a way to get page name from a url using JavaScript? For instance if I have http://www.cnn.com/news/1234/news.html?a=1&b=2&c=3 I just need to get "news.html" string

Thanks!

+1  A: 
var url = "http://www.cnn.com/news/1234/news.html?a=1&b=2&c=3";
url = url.replace(/^.*\//, "").replace(/\?.*$/, "");

You can substitute url with window.location

Vivin Paliath
+1  A: 

I think it's

window.location.pathname.replace(/^.*\/([^/]*)/, "$1");

So,

var pageTitle = window.location.pathname.replace(/^.*\/([^/]*)/, "$1");
Pointy
I think you need to escape forward slashes there. :)
Vivin Paliath
yes I got it - thanks !!
Pointy
Nice! I never knew about `pathname`!
Vivin Paliath
Don't you want a `$` at the end of that? To avoid partial matches?
T.J. Crowder
Answering myself: Not in my experiments, no.
T.J. Crowder
I figured the * would eat up the rest of the pathname string, which I think is what the OP wanted.
Pointy
+3  A: 

You can do this pretty easily via window.location.pathname parsing:

var file, n;

file = window.location.pathname;
n = file.lastIndexOf('/');
if (n >= 0) {
    file = file.substring(n + 1);
}
alert(file);

...or as others have said, you can do it with a regexp in one line. One kinda dense-looking line, but with a comment above it, should be a good way to go.

T.J. Crowder
+1 I'm impressed with the power of regex, but I can't read 'em.
J.Hendrix
A: 

You might want to also find file paths on a local disk, and you might not want to include any hash or get strings in the path-

String.prototype.fileName= function(){
 var f, s= this.split(/[#\?]/, 1)[0].replace(/\\/g,'/');
 s= s.substring(s.lastIndexOf('/')+ 1);
 f=  /^(([^\.]+)(\.\w+)?)/.exec(s) || [];
 return f[1] ||  '';
}
kennebec