Đây là một chút bit cũ nhưng đây là cách tôi làm điều đó. Sử dụng mô-đun URI của Ruby để phân tích cú pháp URL. Nếu nó có thể được phân tích cú pháp thì đó là một URL hợp lệ. (Nhưng điều đó không có nghĩa là có thể truy cập được.)
URI hỗ trợ nhiều chương trình, ngoài ra bạn có thể thêm các chương trình tùy chỉnh bản thân:
irb> uri = URI.parse "http://hello.it" rescue nil
=> #<URI::HTTP:0x10755c50 URL:http://hello.it>
irb> uri.instance_values
=> {"fragment"=>nil,
"registry"=>nil,
"scheme"=>"http",
"query"=>nil,
"port"=>80,
"path"=>"",
"host"=>"hello.it",
"password"=>nil,
"user"=>nil,
"opaque"=>nil}
irb> uri = URI.parse "http:||bra.ziz" rescue nil
=> nil
irb> uri = URI.parse "ssh://hello.it:5888" rescue nil
=> #<URI::Generic:0x105fe938 URL:ssh://hello.it:5888>
[26] pry(main)> uri.instance_values
=> {"fragment"=>nil,
"registry"=>nil,
"scheme"=>"ssh",
"query"=>nil,
"port"=>5888,
"path"=>"",
"host"=>"hello.it",
"password"=>nil,
"user"=>nil,
"opaque"=>nil}
Xem the documentation để biết thêm thông tin về các mô-đun URI.
url bạn cung cấp có vẻ là url tuyệt đối, ý của bạn là gì so với tệp hình ảnh – johannes
Tôi đã đăng [UriValidator với thông số kỹ thuật] (http://stackoverflow.com/a/19423623/356895). – JJD