Ruby on rails 检查给定字符串是否为URL

Ruby on rails 检查给定字符串是否为URL,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,在我的rails应用程序中,我需要验证用户给出的URL是否真的是URL。我只关心HTTP协议(可能还有HTTPS,我根本没有研究过),这让我相信rails中可能已经有一些东西可以为我完成这项工作 如果不是:你能推荐一个正则表达式字符串来实现这一点吗?我在谷歌搜索后发现了一些,但根据用户评论,它们似乎都有一两个问题 谢谢使用 这是一个非常简单的例子。与正则表达式相比,使用URI库的优势在于,您可以执行复杂的检查。验证:url,:format=>URI::regexp(%w(http https))

在我的rails应用程序中,我需要验证用户给出的URL是否真的是URL。我只关心HTTP协议(可能还有HTTPS,我根本没有研究过),这让我相信rails中可能已经有一些东西可以为我完成这项工作

如果不是:你能推荐一个正则表达式字符串来实现这一点吗?我在谷歌搜索后发现了一些,但根据用户评论,它们似乎都有一两个问题

谢谢

使用


这是一个非常简单的例子。与正则表达式相比,使用
URI
库的优势在于,您可以执行复杂的检查。

验证:url,:format=>URI::regexp(%w(http https))

事实上,现在我已经用一堆不同的无效url编写了一些测试,我发现该方法将“”验证为true。也许我只需要多做一些工作?因为它实际上是一个有效的URI。如果要验证URL,请确保#路径和#方案存在。它会检查有效的HTTP(s)URL方案。
%w(stringone stringtwo stringthree)
是创建给定字符串数组的快捷方式。在这种情况下,如果出现异常,那就太过分了。请使用以下答案:(url=~URI::regexp)
def uri?(string)
  uri = URI.parse(string)
  %w( http https ).include?(uri.scheme)
rescue URI::BadURIError
  false
rescue URI::InvalidURIError
  false
end