Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex to match filename at end of URL

Having this text:

http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg 

And other texts like this where the last 1 can be any other number and the last 44 can be any other number as well, I need a regex that will match /1t44.jpg.

Everything I've tried so far (/.+?\.([^\.]+)$) matches from the first slash (//img.oo.com.au/prod/CRWWBGFWG/1t44.jpg).

I'm using JavaScript, so whatever works on RegexPal should do.

like image 333
Juan Avatar asked Nov 08 '11 01:11

Juan


2 Answers

Here's a simple Regex that will match everything after the last /:

/[^/]*$ 
like image 155
Scott Rippey Avatar answered Sep 26 '22 20:09

Scott Rippey


If you want to match a filename with a very specific file extenstion, you can use something like this:

/\/\dt\d\d\.jpg$/ 

This matches:

  • a slash
  • followed by a digit
  • followed by the letter 't'
  • followed by two digits
  • followed by '.jpg' at the end of the string

Or, if you really just want the filename (whatever is after the last slash with any file extension), then you can use this:

/\/[^\/]+$/ 

This matches:

  • a slash
  • followed by one or more non-slash characters
  • at the end of the string

In your sample string of http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg, both of these will match /1t44.jpg. The first is obviously much more restrictive since it requires a specific format of the filename. The second matches any filename.


Other choices. In node.js development, you can use the path module and use path.parse() to break a path up into all of its various components.

And, there are various libraries written for the browser that will break up a path into its components too.

like image 31
jfriend00 Avatar answered Sep 22 '22 20:09

jfriend00