【问题标题】:regex match extensionless url with or without query parameter正则表达式匹配带或不带查询参数的无扩展 url
【发布时间】:2018-11-15 15:37:02
【问题描述】:

我正在尝试匹配带有或不带有查询参数的无扩展名 url。 到目前为止,.+\/[^.\/]*$ 匹配其中一些,但是当查询参数中存在. 时它会失败

例如我想要的是

http://www.example.com/ -> MATCH
http://www.example.com/abc -> MATCH
http://www.example.com/abc/def/ -> MATCH
http://www.example.com/abc/def.ext/ -> MATCH
http://www.example.com/abc?param=abc.def -> MATCH
http://www.anything.com/abc/def.ext/?param=abc.ext -> MATCH

http://www.example.com/abc.ext -> DONT MATCH
http://www.example.com/abc/def.ext -> DONT MATCH
http://www.anything.com/abc/def.ext?param=abc -> DONT MATCH
http://www.anything.com/abc/def.ext?param=abc.def -> DONT MATCH

./ 出现在查询参数键或值中时,How to match only extensionless URLs? 中提供的答案将失败。我尝试了许多模式,但无法获得理想的结果。

我是正则表达式的菜鸟。请帮忙。

【问题讨论】:

  • 您使用什么语言/工具?你试过什么?什么没用?你得到了什么?你期待什么?
  • @Toto,就我而言,我正在尝试使用 js。 are not 正则表达式对于大多数语言来说都是通用的,例如js,java,php。?
  • 我的表达式很少是 .+\/[^.\/]*$, .+\/[^.\/]*\?.*$, .+\/[^. \/]*(|\?.*)$, .+\/[^.\/]*(|\?.*[^.]*)$
  • @Toto 你分享的 stackoverflow 链接上写的相同.. 这些语言共享相同的语法。

标签: regex


【解决方案1】:

试试正则表达式:.+\/[^.\/]*?(?:\?.+)?$

Demo

【讨论】:

  • 那行得通,我在尝试中缺少的是贪婪吗?最后是量词。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
相关资源
最近更新 更多