最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

regex - extract strings between last two slashes using regular expression in javascript - Stack Overflow

programmeradmin8浏览0评论

I want to extract the string between last two string using a regular expression. I cannot seem to be able to e up with the right expression, if someone could help me that would be great.

Say the string is: aa/bbbb/ccccc/eeee/fffff.jpg, I want to extract out "eeee".

Thank you.

I want to extract the string between last two string using a regular expression. I cannot seem to be able to e up with the right expression, if someone could help me that would be great.

Say the string is: aa/bbbb/ccccc/eeee/fffff.jpg, I want to extract out "eeee".

Thank you.

Share Improve this question asked Apr 11, 2016 at 23:41 AshDAshD 1,1642 gold badges14 silver badges29 bronze badges 2
  • regex101./r/aV9lK1/1 ?? Capturing a named group can help to name your required data. – user_3068807 Commented Apr 11, 2016 at 23:58
  • 2 Pretty decent @shafaq -- but definitely do not assume a 3-character extension — no extension is legal, .html and .properties are legal. How about /.*\/([^/]*)\/[^/]*/ – Stephen P Commented Apr 12, 2016 at 0:14
Add a ment  | 

2 Answers 2

Reset to default 4

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];
 }
发布评论

评论列表(0)

  1. 暂无评论