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 に答える