【问题标题】:How to match only extensionless URLs?如何仅匹配无扩展名的 URL?
【发布时间】:2023-03-09 07:27:01
【问题描述】:

我想要一个只匹配无扩展 url 的正则表达式。换句话说,如果 url 中存在扩展名,则完全忽略它。

/(.+)/(.+) 这将匹配带有和不带有扩展名的 URL。

www.site.com/sports/cricket 应该匹配

www.site.com/sports/cricket.aspx 不应匹配

提前致谢

【问题讨论】:

  • www.site.com/sports.aspx/cricket 怎么样?并且“/(.+)/(.+)”与 www.site.com 不匹配。这是故意的吗?

标签: asp.net regex url


【解决方案1】:
.+/[^./]*$

这将匹配没有 .最后一个/

【讨论】:

    【解决方案2】:
    ^/(.+)/([^/.]*)$
    

    将匹配最后一个斜杠后不包含点的 URL(没有域)。

    编辑:更好地适应原始正则表达式。

    【讨论】:

    • 你需要逃跑。在 [^/.] 中,所以 [^\.] 可能是?
    • 不,你没有。点是字符类中的文字点。
    【解决方案3】:

    以下将只匹配至少有两个/(根据您的示例正则表达式)的字符串,并且在最后一个/ 之后的任何地方都没有.

    /(.+)/([^\./]+)$
    

    如果您想了解更多关于正则表达式的信息,我推荐http://www.regular-expressions.info/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2013-09-23
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多