【问题标题】:Adding a Regex Constraint on a Rails Route在 Rails 路由上添加正则表达式约束
【发布时间】:2016-09-20 08:39:42
【问题描述】:

我有很多路线可以像:

possible routes:
- mac-book-retina-17-pid234-234
- hp-laptop-pid234-234
- vaoe-x12-pid234-234

我想使用 Ruby 路由文件中的约束将所有操作匹配到一个操作。像

get 'products/:product_info', to: 'products#type', constraints: { product_info: /[a-z]+-a-z]+-a-z]+-pid\d+-\d+/ }

问题是/[a-z]+-/ 可以重复 1 次、2 次和 3 次,并且很难为所有情况获得一致的共享 Regex。 在所有路由中唯一不变的部分是最后一部分:pid234-234,它指的是产品 id 和另一个 sub_id。

我正在考虑类似的事情:找到所有字符串,直到你每个这部分(pid),但我不知道该怎么做。

【问题讨论】:

  • 类似this?
  • 您可以使用花括号将组的重复次数指定为范围,例如([a-z0-9]-){1,4}.

标签: ruby regex ruby-on-rails-4 routes


【解决方案1】:

我想说一个好的起点是dynamic-segments

get 'products/:product_info', to: 'products#type', constraints: { product_info: /[A-Z]\d{5}/ }

希望对你有帮助

快乐的黑客

【讨论】:

    【解决方案2】:

    我想我设法找到了一个可能的解决方案:

    (.*)pid\d+-\d+
    

    此正则表达式将匹配所有字符串,直到到达 pid-12-12

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2011-06-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      相关资源
      最近更新 更多