Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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/5/ruby-on-rails-4/2.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
Regex 如何使用正则表达式验证RubyonRails的空行(无数字)与约束_Regex_Ruby On Rails 4 - Fatal编程技术网

Regex 如何使用正则表达式验证RubyonRails的空行(无数字)与约束

Regex 如何使用正则表达式验证RubyonRails的空行(无数字)与约束,regex,ruby-on-rails-4,Regex,Ruby On Rails 4,我想验证电话字段,电话1,电话2,联系人号码是否为8位数字,以及第一个数字是否以2-3,5-9开头。它在验证时起作用,但如果电话2或联系人号码为空则不起作用。如何设置正则表达式以适应具有此约束的空行(无数字) class Invitation < ApplicationRecord validates :church, presence: true, length: { maximum: 50 } VALID_PHONE_REGEX = /\A[2-3,5-9]\d{7}\z/

我想验证电话字段,电话1,电话2,联系人号码是否为8位数字,以及第一个数字是否以2-3,5-9开头。它在验证时起作用,但如果电话2或联系人号码为空则不起作用。如何设置正则表达式以适应具有此约束的空行(无数字)

class Invitation < ApplicationRecord
  validates :church,  presence: true, length: { maximum: 50 }
  VALID_PHONE_REGEX = /\A[2-3,5-9]\d{7}\z/
  validates :telephone1, presence: true,
                format: { with: VALID_PHONE_REGEX },
                uniqueness: { case_sensitive: false }
  validates :telephone2, presence: false,
                format: { with: VALID_PHONE_REGEX },
                uniqueness: { case_sensitive: false }
  validates :contactNumber, presence: false, 
                format: { with: VALID_PHONE_REGEX },
                uniqueness: { case_sensitive: false }
end
班级邀请
谢谢


Patrick Lee

您似乎可以使用以下选项(请参阅):

如果属性值为
空白?
,例如
nil
或空字符串,此选项将允许验证通过

此外,如果希望正则表达式模式与所需的数字或空字符串匹配,可以使用可选的非捕获组
(?:…)?


我猜您认为逗号分隔字符类中的范围。事实上,它匹配一个文字逗号。因此,我建议将其从模式中删除。

如果希望模式也匹配空字符串,请尝试
/\A(?[2-35-9]\d{7})?\z/
。我猜您认为逗号分隔字符类中的范围,我删除了它,因为那里的逗号与文字逗号匹配。另外,尝试
allow\u blank:true
它可以工作。谢谢
allow_blank: true
/\A(?:[2-35-9]\d{7})?\z/
   ^^^             ^^