正则表达式匹配 url 的特定最后一个路径部分

标签 regex

出于重定向目的,我尝试匹配网址中路径的最后部分。我想匹配任何以“/serve”结尾的网址,无论是否存在查询字符串。

我尝试了多种正则表达式模式,但以下一种似乎有效,但查询字符串的存在破坏了匹配:

我尝试过的模式:

\/([a-z0-9_-]*\/serve[\/]?)$

应匹配的测试字符串示例:

https://test.com/serve
https://test.com/serve/?param=1
https://test.com/serve/
http://test.com/serve

不应匹配的测试字符串示例:

https://test.com/serve/ways-to-serve
https://test.com/serve/ways-to-serve?param=1

提前致谢。

最佳答案

您可以使用

\/([^\/]+\/serve\/?)(?:$|\?)

请参阅regex demo .

详细信息:

  • \/ - 一个 / 字符
  • ([^\/]+\/serve\/?) - 捕获组 1:除 / 字符之外的一个或多个字符,然后是 /serve,可选的 / 字符
  • (?:$|\?) - 匹配字符串结尾或 ? 字符的非捕获组。

请参阅regex graph :

enter image description here

关于正则表达式匹配 url 的特定最后一个路径部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67878002/

相关文章:

正则表达式仅匹配某个单词

javascript - 为什么我的简单 "three digits, followed by three identical digits, followed by four identical digits"正则表达式不起作用?

java - 在java中使用正则表达式从基于下划线的字符串中获取子字符串

JavaScript 正则表达式仅在特定上下文中按空格分割

javascript - jQuery删除textarea中的img但保留alt属性并删除所有div

javascript - 将元素的类替换为另一个类

regex - split_to_table() 按字符数,无定界符

regex - 如何从代码中删除缩进?

Javascript 安全地使用用户正则表达式

python - 正则表达式匹配字符串每一侧相同数量的相同字符