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

4
我正在尝试匹配格式为“0000”至“2459”的时间码。如何匹配特定范围内的数字,以便我可以特别匹配0到24之间的所有数字以及0到59之间的所有数字,而不是更大或更小的数字?我知道如何匹配每个单独的数字,但这不能实现我的目标,因为例如:
/[0-2][0-4]/

这段代码将捕获数字0-4、10-14和20-24,但会漏掉其中的数字。因此,我想要捕获多位数的所有数字。

2个回答

12
以下代码应该能达到效果:
/(?:[01][0-9]|2[0-4])[0-5][0-9]/

解释:

  • ?:使括号成为非捕获组。
  • 在括号中,我们匹配00-19或20-24之间的数字。
  • 然后我们匹配00-59之间的数字。

0

Sebastian的答案在code MOD 10 > 59时会失败。例如,它无法识别1080

使用/(?:[01][0-9][0-9]|2(?:[0-3][0-9]|4[0-5]))[0-9]/代替,该正则表达式接受以4位数字开头的数字:

  • 以0或1开头,或者
  • 以23开头,或者
  • 以245开头

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接