首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配最后一次出现斜杠后的文本

匹配最后一次出现斜杠后的文本
EN

Stack Overflow用户
提问于 2020-04-24 10:30:53
回答 2查看 24关注 0票数 1

因此,我需要获取url的最后一部分,例如

代码语言:javascript
复制
https://www.example.com/no-match/match-this-part/
https://www.example.com/no-match/match-this-part-too
https://www.example.com        <- don't match anything
https://www.example.com/       <- don't match anything

我需要它忽略双斜杠,匹配斜杠后的最后一部分(如果斜杠可以包括就更好了)。第二个条件是斜杠不是最后一个字符(示例1)

这就是我尝试过的:/\/(?:.(?!\/))+$/

EN

回答 2

Stack Overflow用户

发布于 2020-04-24 13:36:48

您可以使用以下正则表达式。

代码语言:javascript
复制
\bhttps:\/\/[\da-z._~-]+(?:\/[\da-z._~-]+)*(\/[\da-z._~-]+)

如果存在匹配,捕获组1将包含最后一个正斜杠,后跟URL的其余部分,前提是URL中至少有一个字符紧跟在最后一个正斜杠之后。

Demo

Javascript的regex引擎执行以下操作。

代码语言:javascript
复制
\b               # match a word break
https:\/\/       # match 'http://'
[\da-z._~-]+     # match 1+ chars in char class
(?:              # begin non-cap grp
  \/             # match '/'
  [\da-z._~-]+   # match 1+ chars in char class
)                # end non-cap grp
*                # execute non-cap grp 0+ times
(                # begin cap grp 1
  \/             # match '/' 
  [\da-z._~-]+   # match 1+ chars in char class
)                # end cap grp 1  
票数 1
EN

Stack Overflow用户

发布于 2020-04-24 10:34:50

匹配URL的初始部分,然后捕获后跟斜杠的非斜杠。如果匹配,则提取第一个捕获组:

代码语言:javascript
复制
`https://www.example.com/no-match/match-this-part/
https://www.example.com/no-match/match-this-part-too
https://www.example.com
https://www.example.com/`
  .split('\n')
  .forEach((str) => {
    const match = str.match(/https?:\/\/[^/]+\/.*?([^/]+)\/?$/);
    if (match) {
      console.log(match[1]);
    }
  });

https?:\/\/[^/]+\/.*?([^/]+)\/?$的意思是:

如果要允许匹配任何任意协议,请使用[^:]+而不是https?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61400140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档