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

Emi*_*äck 33 ruby regex ruby-on-rails

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

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

谢谢

Sim*_*tti 65

使用URI库.

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

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