Ruby url regex,'除非包含http'不起作用

时间:2012-02-24 15:18:57

标签: ruby regex

如果网址不存在,我有以下方法将http://添加到网址的开头:

def smart_url(url)
  unless url[/^http?s:\/\//]
    url = 'http://' + url
  end
end

只有在没有包含http(s)的情况下才有效,但是当http://已经包含在内时,它仍会添加它,我最终会有两个,当https://已经包含时它返回no网址!

我的正则表达式是否犯了错误?

2 个答案:

答案 0 :(得分:3)

您应该将正则表达式更改为:

^https?:\/\/

测试here

答案 1 :(得分:1)

非正则表达式解决方案:

def smart_url(url) 
  url.start_with?('http://', 'https://') ? url : 'http://'+url
end

? :构造是编写if .. then..else..end的简短方法。