REGEX: Capture Filename from URL without file extension

var url = "http://example.com/index.htm";
var filename = url.match(/([^\/]+)(?=\.\w+$)/)[0];

Let’s go through the regular expression:

[^\/]+    # one or more character that isn't a slash
(?=       # open a positive lookahead assertion
  \.      # a literal dot character
  \w+     # one or more word characters
  $       # end of string boundary
)         # end of the lookahead

This expression will collect all characters that aren’t a slash that are immediately followed (thanks to the lookahead) by an extension and the end of the string — or, in other words, everything after the last slash and until the extension.

Alternately, you can do this without regular expressions altogether, by finding the position of the last / and the last . using lastIndexOf and getting a substring between those points:

var url = "http://example.com/index.htm";
var filename = url.substring(url.lastIndexOf("https://stackoverflow.com/") + 1, url.lastIndexOf("."));

Leave a Comment