我想用regex验证字段,并允许它为空(接受空字符串)。到目前为止,我唯一能做的就是编写一个允许空字符串的正则表达式,如:
validates :field,
format: { with: /\A([a-z]+|)\z/i }
现在,这不是一个正确的方式 - 这看起来像一个丑陋的黑客。我想知道是否有另一种(正确的)方法?
答案 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 }