【问题标题】:Validating minutes and seconds in Rails在 Rails 中验证分钟和秒
【发布时间】:2015-07-04 11:49:58
【问题描述】:

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

【问题讨论】:

  • 正则表达式不适合测试值的范围。不过,它们对于从字符串中提取值很有用,因此请使用它,然后应用逻辑来查看值是否在范围内。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    /\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

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 2019-07-16
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2023-03-14
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多