【问题标题】:Regex for url matching and rewriting用于 url 匹配和重写的正则表达式
【发布时间】:2013-01-10 03:01:05
【问题描述】:

您好,我正在尝试创建一个匹配以下内容的正则表达式

/go/brand

但不匹配

/go/brand/anotherpage

我在想我可以使用类似下面的东西

^go/([_0-9a-z-]+)(?!/)

我不匹配任何在品牌后带有斜线的东西(品牌可以是动态的)。任何帮助将不胜感激。

【问题讨论】:

  • ^go\/([_0-9a-z-]+)[^\/]\/ 这是超级接近,但它匹配 /go/brand/ 而不匹配 /go/brand我想要这个相反的。所以我需要它来匹配 /go/brand 而不是 /go/brand/

标签: regex url url-rewriting


【解决方案1】:

尝试添加一个字符串结束锚:

^/go/([\w-]+)(?!/)$

这在RegExr 中对我有用,但也许您的 URL 重写正则表达式引擎需要适应其他细微差别。

【讨论】:

  • 这工作完美无缺,非常感谢!我的正则表达式 foo 很糟糕。
  • 是否也可以匹配这个:/go/brand 和 /go/brand/ 但不是 /go/brand/somethingelse
  • 这实际上更简单:^/go/([\w-]+)/?$,其中捕获组不会包含最后的斜线。
  • ...想一想,第一个也不需要负前瞻:只需 ^/go/([\w-]+)$ 就可以了。 (一定是那些日子之一!)
【解决方案2】:
^/go/[^/]+$

如果/ 用作正则表达式分隔符,则需要转义前两个/,即/^\/go\/[^/]+$/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多