0

Interactive ruby ready.

> time = /\A(?­<hours>(0\d|1[0-9­]|2[0-3]))­:(?<minutes­>([1-5]\d|0­\d))\Z/
=> /\A(?<hours>(0\d|1[0-9]|2[0-3])):(?<minutes>([1-5]\d|0\d))\Z/

> match = time.­match '11:3­0'
=> #<TypeError: can't dump MatchData>

我正在尝试运行代码,但出现上述错误。我做错了什么regexp帮助我改进它。

编辑

> time = /\A(0­\d|1[0-9­]­|2[0-3])­:­([0-5]\d)\­Z/
=> /\A(0\d|1[0-9??]|2[0-3])??:([0-5]\d)\Z/
> time.match­('11:30')
=> #<TypeError: can't dump MatchData>
> 
4

1 回答 1

2

应该 可以工作,并且您链接到的示例确实可以在我的机器上工作。但是,正则表达式不必要地复杂:

time = /\A(?<hours>0\d|1[0-9]|2[0-3]):(?<minutes>[0-5]\d)\Z/

足够。

但是,似乎在您的环境中的某个地方,字符串中嵌入了额外的字节,这些字节使在线测试器(它工作正常)感到困惑。尝试从这个答案中复制正则表达式(我已经删除了不可见的字符),看看它现在是否适合你。

于 2013-01-16T08:26:01.060 回答