I want to extract the string between last two string using a regular expression. I cannot seem to be able to come up with the right expression, if someone could help me that wou
Since you only care about the last set of slashes, you start by matching anything
.*
then you want a literal slash
\/
(escaped since the slash would terminate the js regex)
now you want anything up to the next slash, which implies not a slash and _there must be something (one-or-more) and we'll put that in a capturing group so you can extract it.
([^/]+)
and followed by another literal slash
\/
then anything else (the file name?) that, again, does not include slashes
[^/]+
Putting that all together gives you the regex
/.*\/([^/]+)\/[^/]+/
and
"aa/bbbb/ccccc/eeee/fffff.jpg".match(/.*\/([^/]+)\/[^/]+/);
produces
["aa/bbbb/ccccc/eeee/fffff.jpg", "eeee"]
... the eeee is captured.
I know you said you wanted to use a regex but for those looking for a solution but don't require it to be a regex, you could do this simply by splitting the string:
var originalString = 'aa/bbbb/ccccc/eeee/fffff.jpg';
//convert to array
var parts = originalString.split('/');
//find the second to last item
var lastPartOfPath = '';
//make sure there are more than one part
if (parts.length > 1) {
lastPartOfPath = parts[parts.length-2];
}