检查给定的字符串是否为URL

时间:2011-03-16 19:55:54

标签: ruby-on-rails ruby regex

在我的rails应用程序中,我需要验证用户提供的URL是否真的是一个URL。我只关心HTTP协议(也许是HTTPS,我根本没有考虑过这个问题),这让我相信有些东西已经存在于rails中,可以为我做这项工作。

如果没有:你能推荐一个这样做的正则表达式字符串吗?我在google搜索后发现了一些,但根据用户评论他们似乎都有一两个问题。

由于

2 个答案:

答案 0 :(得分:65)

使用URI library

def uri?(string)
  uri = URI.parse(string)
  %w( http https ).include?(uri.scheme)
rescue URI::BadURIError
  false
rescue URI::InvalidURIError
  false
end

这是一个非常简单的例子。使用URI库而不是正则表达式的优点是可以执行复杂的检查。

答案 1 :(得分:3)

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