【问题标题】:Rails ActiveRecord regex validation of non-mandatory fieldsRails ActiveRecord 正则表达式验证非必填字段
【发布时间】:2012-04-03 08:25:09
【问题描述】:

我想用正则表达式验证一个字段,并允许它为空(接受一个空字符串)。到目前为止,我唯一能做的就是编写一个允许空字符串的正则表达式,例如:

validates :field,
          format: { with: /\A([a-z]+|)\z/i }

现在,这不是一个正确的方法 - 这似乎是一个丑陋的 hack。我想知道是否有另一种(正确的)方法?

【问题讨论】:

    标签: ruby-on-rails regex ruby-on-rails-3 validation activerecord


    【解决方案1】:

    allow_blank 应该可以工作。 (还有 allow_nil 只接受 nil 值(不是空字符串))

    validates :field,
              format: { with: /\A([a-z]+|)\z/i }, :allow_blank => true
    

    【讨论】:

    • 啊,漂亮,我知道这是 RT(F)M 问题! =)
    【解决方案2】:

    您不需要交替...您可以使用“*”量词来指定“零次或多次”出现次数。另外,我会使用 '\w' 而不是 [a-z]...这将捕获字母数字。

     validates :field,
          format: { with: /\A(\w*)\z/i }
    

    【讨论】:

    • 我已经把[a-z] 作为一个例子,但我不想在那里使用*:allow_blank 非常完美,因为它允许 nil 和空字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2014-02-23
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多