匹配字符串与简单的正则表达式

时间:2016-02-23 09:50:18

标签: ruby-on-rails ruby regex

在Rails应用程序中,我需要识别以这种形式表示的某些URL路径:

paths = ['/a/*/b/c', '/f/*']

我是中间件,我可以访问路径,我应该写什么样的条件来检查当前的URL路径是否与提供的数组中的条目匹配?

  path = Rack::Request.new(env).path
  included = paths.any? { |s| path.include?(s) }

这只检查包含,但现在已经到了通配符。

1 个答案:

答案 0 :(得分:2)

您可以将路径转换为正则表达式模式:

paths = ['/a/*/b/c', '/f/*']

path = Rack::Request.new(env).path
patterns = paths.map { |path| Regexp.new path.gsub(/\*/, '[^/]+') }
    # Convert `*` to `[^/]+` to match any non-`/` characters. 
included = patterns.any? { |s| path =~ s }