在 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
我目前正在尝试为我的一个模型验证名为 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