【发布时间】:2013-11-08 15:45:21
【问题描述】:
我正在尝试匹配 URL 末尾的 'MN+WI' 之类的值,例如 /foos/MN+WI。模式 [a-zA-Z][\+\,]? 在 rubular.com 上产生匹配结果 MN+WI,但在 IRB 中:
s="MI+WI"
p="[a-zA-Z]{2}[\+\,]?"
r=Regexp.new(p)
r.match(s) # => #<MatchData "MI+">
Ruby 控制台中的行为与我在 Rails 中遇到的情况一致。两者有区别吗?我需要如何调整我的正则表达式模式?
$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0]
$ rails -v
Rails 4.0.0
** 编辑 **
原始模式应该是[a-zA-Z]{2}[\+\,]?。
我真正需要让路线识别任何这些变化并将其分配给参数:
-
MN(工作中) -
mn(工作中) -
MN+WI(不工作) -
MN+WI+IA(任意两个字母的数值,用+分隔) - 不匹配单个或超过 2 个字母的值(例如
ABC),但保留 2 个字母的值(例如ABC+MN;保留MN)
【问题讨论】:
-
Rails 在 Ruby 上运行,所以它们应该是一致的:p
-
[a-zA-Z][\+\,]?与 MN+WI 不匹配。
标签: ruby-on-rails ruby regex irb