Rails ActiveRecord正则表达式验证非必填字段

时间:2012-03-18 16:52:21

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

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

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

现在,这不是一个正确的方式 - 这看起来像一个丑陋的黑客。我想知道是否有另一种(正确的)方法?

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:0)

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

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