如何判断字符串是否为有效URL?

例如:

http://hello.it => yes
http:||bra.ziz, => no

如果这是一个有效的URL,我如何判断它是否与图像文件有关?

推荐答案

注意:

正如@CGuess所指出的,这个问题有一个bug,并且已经记录了9年多,因为验证不是这个正则表达式的目的(参见https://bugs.ruby-lang.org/issues/6520).




使用Ruby分发的URI模块:

require 'uri'

if url =~ URI::regexp
    # Correct URL
end

就像Alexander Günther在 comments 中说的那样,它会判断字符串contains是否是URL.

要判断字符串是否为URL,请使用:

url =~ /\A#{URI::regexp}\z/

如果您只想判断web URL(httphttps),请使用以下选项:

url =~ /\A#{URI::regexp(['http', 'https'])}\z/

Ruby相关问答推荐

Ruby插值法导致无序输出

Python 正则表达式是否等同于 Ruby 的原子分组?

我在哪里可以找到积极开发的 Ruby lint 工具?

如何使用 RSpec 忽略或跳过测试方法?

判断 Ruby Gem 的可用性

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

使用 Ruby MiniTest 之前/之后的套件

如何获取字符串中所有出现的 Ruby 正则表达式的匹配数据?

如何用 Ruby 覆盖 shell 中的打印行?

Ruby 中的排序稳定吗?

Ruby 是否有任何数字格式化类?

Ruby 中的 main是什么?

符号到字符串问题

将字符串与多个模式匹配

Ruby 运算符优先级表

Ruby 中方法名称的限制是什么?

Ruby 和您必须使用 OpenSSL 支持重新编译 Ruby 或更改 Gemfile 中的源代码

如何强制 Ruby 字符串为 n 个字符

Ruby,生成随机十六进制 colored颜色

判断 Ruby 中是否存在 URL