Ruby on rails Rails-验证表达式[X或Y]

Ruby on rails Rails-验证表达式[X或Y],ruby-on-rails,regex,validation,Ruby On Rails,Regex,Validation,我定义了两个正则表达式 ip_regex = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/ hostname_regex = /^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/

我定义了两个正则表达式

ip_regex = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/
hostname_regex = /^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$/
我需要允许用户在文本字段中输入IP地址或主机名。我的验证代码如下

validates :ip_address,  :presence => true,
                        :format   => { :with => ip_regex || hostname_regex }
我已经验证了ip_正则表达式是成功的。但是,主机名\u regex不是。似乎主机名\正则表达式或我的验证代码有缺陷。是哪一个?我如何解决这个问题?是否有更有效的方法执行此任务

^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$

->我认为你的主机名没有问题

您可以使用正则表达式或(|)运算符来匹配多种格式。只需用|运算符分隔正则表达式即可

validates :ip_address,  :presence => true,
:format   => { :with =>/(^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$)|(^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$)/ }  

请参阅

此文件的可能副本工作正常。非常感谢你的帮助。