因此,我需要获取url的最后一部分,例如
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)
这就是我尝试过的:/\/(?:.(?!\/))+$/
发布于 2020-04-24 13:36:48
您可以使用以下正则表达式。
\bhttps:\/\/[\da-z._~-]+(?:\/[\da-z._~-]+)*(\/[\da-z._~-]+)如果存在匹配,捕获组1将包含最后一个正斜杠,后跟URL的其余部分,前提是URL中至少有一个字符紧跟在最后一个正斜杠之后。
Javascript的regex引擎执行以下操作。
\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 发布于 2020-04-24 10:34:50
匹配URL的初始部分,然后捕获后跟斜杠的非斜杠。如果匹配,则提取第一个捕获组:
`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?。
https://stackoverflow.com/questions/61400140
复制相似问题