验证分钟和秒数,其中分钟数字的范围为1-2

时间:2015-09-17 18:58:49

标签: ruby-on-rails ruby regex validation time

我有一个基于时间的正则表达式,可成功验证分钟和秒:

validates_format_of :duration, with: /\A(?!00:00)[0-5][0-9]:[0-5][0-9]\Z/

我遇到的问题是如果输入字符串2:30,我会收到验证错误。相反,它需要像02:30这样的东西。我的第一个猜测是插入一个两位数的可选项,例如d{1,2},但我不知道如何将这样的内容与我现在的负面预测相结合。

1 个答案:

答案 0 :(得分:0)

将正则表达式更改为以下内容,这使得第一个数字可选:

/\A(?!00:00)[0-5]?[0-9]:[0-5][0-9]\Z/

在初始?匹配器之后添加[0-5]将允许它具有1或0个匹配。这样,您就不会被要求拥有前导零。

如果您不希望前导零有效(因此需要2:30而不允许02),您可以更进一步将范围从[0-5]更改为[1-5]: 30):

/\A(?!00:00)[1-5]?[0-9]:[0-5][0-9]\Z/