2011-02-05 21 views
1

我試圖匹配格式爲「0000」到「2459」的時間碼。如何匹配特定範圍內的數字,以便我可以特別匹配0到24之間的所有數字以及0到59之間的所有數字,而且沒有更多或更少的數字?如何使用Ruby正則表達式匹配多位數字範圍?

我懂得每一個人數字匹配,但不會做我想做的,因爲例如

/[0-2][0-4]/ 

將捕獲的數字0-4,10 - 14和20-24,那些失蹤在之間。所以我想捕獲所有包含多個數字。

回答

10

下應該做的伎倆:

/(?:[01][0-9]|2[0-4])[0-5][0-9]/ 

說明:

  • ?:使括號非捕獲。
  • 在括號中,我們簡單地匹配00-19或20-24。
  • 之後我們匹配00-59。
+0

+1很好的答案,很好的解釋。 – 2011-02-05 22:42:54

0

塞巴斯蒂安的回答失敗時,code MOD 10 > 59。 例如,它不會承認1080

使用 /(?:[01][0-9][0-9]|2(?:[0-3][0-9]|4[0-5]))[0-9]/代替, 這需要一個4位數開始任一

  • 用0或1,OR
  • 23,OR