在 Rails 中验证分钟和秒

Validating minutes and seconds in Rails

我目前正在尝试为我的一个模型验证名为 duration 的基于时间的属性。该属性将接受类似于 01:30 的内容作为有效值。目标是有一个 4 位时间码(分钟和秒),两者之间有一个冒号。分钟和秒都限制在 59 范围内,并且不能将 00:00 作为值。我目前使用的正则表达式似乎不起作用:

validates :duration, presence: true, format: {with: /A([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]z/}

您可以尝试以下正则表达式:

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

使用否定lookahead(?!00:00),正则表达式的其余部分是一个简单的minutes/seconds验证。

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

if subject =~ /\A(?!00:00)[0-5][0-9]:[0-5][0-9]\Z/
    # Successful match
else
    # Match attempt failed
end

REGEX DEMO