如何验证我的模型属性是否与正则表达式不匹配?

Dav*_*ave 5 validation model ruby-on-rails-5

我正在使用Rails 5.如何为我的模型创建验证规则,如果属性与模式不匹配,则验证规则?我有这个

validates_numericality_of :my_str, :with => /\d:\d/, :allow_blank = true
Run Code Online (Sandbox Code Playgroud)

但我真正想说的是验证字符串是否与正则表达式不匹配.

Rya*_*ker 3

我的理解是,如果它不是数字,您希望验证通过,那么为什么不更改正则表达式以匹配除数字之外的任何内容:

/^(?!\d)/
Run Code Online (Sandbox Code Playgroud)

使用你的代码将会是

validates_format_of :my_str, :with => /^(?!\d)/, :allow_blank = true
Run Code Online (Sandbox Code Playgroud)

或者:
正如文档所说

或者,您可以使用 :without 选项要求指定的属性与正则表达式不匹配。

所以:

validates_format_of :my_str,format: { without => /\d:\d/},  allow_blank = true
Run Code Online (Sandbox Code Playgroud)

with通过测试属性值是否与使用or选项validates_format_of指定的给定正则表达式匹配来验证属性值:with:without