检查给定的字符串是否为URL
问题描述:
在我的Rails应用程序中,我需要验证用户给出的URL是否确实是一个URL。我只关心HTTP协议(也许HTTPS,我根本没有考虑过),这使我相信可能已经有一些可以为我工作的rails。检查给定的字符串是否为URL
如果不是:你能推荐一个正则表达式字符串吗?根据用户的评论,我在google搜索后发现了一些,但他们似乎都有一两个问题。
感谢
答
使用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
库的优点是可以执行复杂的检查。
答
validates :url, :format => URI::regexp(%w(http https))
+1
这将错误地验证字符串,如“http:// google.com测试“ –
其实现在我已经写了一些测试与一群不同的无效网址的我发现,这种方法验证的“http://foo.invalid”为真。也许我只需要摆弄更多? –
因为它实际上是一个有效的URI。如果您想验证URL,请确保#path和#scheme存在。 –
示例代码中的'%w(http https)'是什么? –