6

我想用正则表达式验证一个字段,并允许它为空(接受一个空字符串)。到目前为止,我所管理的唯一一件事就是写一个正则表达式,它允许一个空字符串,如:Rails的ActiveRecord非必需字段的正则表达式验证

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

现在,这不可能是一个适当的方式 - 这似乎是一个丑陋的黑客。我想知道是否有另一种(适当的)方法?

回答

10

allow_blank应该工作。 (也有allow_nil只接受零个值(不是空字符串))

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

啊,美丽,我知道它毕竟是RT(F)M问题! =) – aL3xa 2012-03-18 17:09:50

0

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

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

我把'[a-z]'当成一个例子,但我宁愿不要在那里使用'*'。 ':allow_blank'是完美的,因为它允许'无'和空字符串。 – aL3xa 2012-03-18 17:18:36