Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails中为精确的3位数字编写验证?_Ruby On Rails_Regex_Validation - Fatal编程技术网

Ruby on rails 如何在RubyonRails中为精确的3位数字编写验证?

Ruby on rails 如何在RubyonRails中为精确的3位数字编写验证?,ruby-on-rails,regex,validation,Ruby On Rails,Regex,Validation,在我的控制器中,我有: validates_presence_of :order_of_importance, :on => :create, :with => /^\d{3}$/ 但如果他们键入以下内容,这仍然会有效(我认为): 4231 但我想确保他们只键入3位字符 有什么想法吗?/^\d{3}$/应该这样做。它确保数字在要匹配的字符串末端开始和结束 此外,您不需要在结尾处使用i,因为数字没有大小写。您可以试试 validates_length_of :order_of_im

在我的控制器中,我有:

validates_presence_of :order_of_importance, :on => :create, :with => /^\d{3}$/
但如果他们键入以下内容,这仍然会有效(我认为):

4231
但我想确保他们只键入3位字符


有什么想法吗?

/^\d{3}$/
应该这样做。它确保数字在要匹配的字符串末端开始和结束

此外,您不需要在结尾处使用
i
,因为数字没有大小写。

您可以试试

validates_length_of :order_of_importance, :maximum => 3
或许“更具讽刺意味”的方式是:

validates_length_of       :order_of_importance, :on => :create, :is => 3
validates_numericality_of :order_of_importance, :on => :create

隐马尔可夫模型。。事实上,这似乎没有验证。除了数字之外还有什么吗?即使是空白也会把事情搞砸。如果只有三位数字,正则表达式将匹配。如果您需要“字符串中的三位数字”,请尝试:
/(?:^ | \D)\D{3}(?:\D |$)/
@Kolik写的是正确的,但是您应该使用validates_format_of而不是validates_presence_of来使用正则表达式
/\a\D{5}\z/
rails不喜欢
$
这样的锚