如何使用Ruby正则表达式匹配多位数范围?

时间:2011-02-05 20:10:19

标签: ruby regex

我正在尝试将格式为“0000”的时间码与“2459”匹配。如何匹配特定范围内的数字,以便我可以专门匹配0到24之间的所有数字以及0到59之间的所有数字,并且没有更大或更小的数字?

我知道如何匹配每个数字,但这不会做我想要的,因为例如

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

将捕获数字0-4,10-14和20-24,遗漏中间数字。所以我想捕获所有包含多个数字。

2 个答案:

答案 0 :(得分:11)

以下应该可以解决问题:

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

说明:

  • ?:使括号无法捕获。
  • 在括号中,我们只匹配00-19或20-24。
  • 之后我们匹配00-59。

答案 1 :(得分:0)

code MOD 10 > 59时,塞巴斯蒂安的回答失败了。 例如,它无法识别1080

使用 /(?:[01][0-9][0-9]|2(?:[0-3][0-9]|4[0-5]))[0-9]/而是, 这需要一个4位数字开头

  • 0或1,或
  • 23,OR
  • with 245