【问题标题】:Express Router Regex - How can I match a string literal that includes a hyphen?Express Router Regex - 如何匹配包含连字符的字符串文字?
【发布时间】:2019-09-21 02:06:07
【问题描述】:

我有两条路线。访问test 时,它也将与example-test 匹配,因为有连字符。我试图逃避它\-,但它仍然匹配。如何在不调用两条路由的情况下正确匹配?

查看示例

app.use('/site/(:locale/)?test(.(xml|xml.gz))?', ...)
app.use('/site/(:locale/)?example-test(.(xml|xml.gz))?', ...)

【问题讨论】:

  • 我已经尝试过在快速路由的正则表达式支持之外完全匹配example-test。快速路由可以保持两者匹配。

标签: javascript node.js regex express routing


【解决方案1】:

我猜,也许

/site/(?::locale/)?(?:example-)?test(?:\.xml\.gz|\.xml)

也许可以调查一下。

Demo


如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在this link 中观看它如何与一些示例输入匹配。


【讨论】:

  • 输入这个值来表达返回一个给定无效正则表达式的异常。我目前正在解决问题。如果我弄明白了会更新。我输入了app.use('/site/(?::locale/)?(?:example-)test(?:\.xml\.gz|\.xml)', ...) 异常输出了无效的正则表达式/^\/site\/(?:?:(?:([^\/]+?))\/)?test(?:\.xml\.gz|\.xml)?\/?(?=\/|$)/
猜你喜欢
  • 2010-11-22
  • 2021-06-02
  • 2020-11-13
  • 2019-04-24
  • 1970-01-01
  • 2022-11-19
  • 2019-06-05
  • 2012-06-13
  • 1970-01-01
相关资源
最近更新 更多