如何从url中删除随机过多的斜杠?

时间:2013-04-26 12:58:44

标签: ruby-on-rails ruby regex gsub slash

如何从网址中删除随机过多的斜杠或只是验证它?

例如,

有效陈述

  

http://domain.com/url/url2

     

https://domain.com/url/url2

     

www.domain.com/url/url2

无效陈述:

  

http://domain.com//url/url2

     

https://domain.com/////url/url2

     

www.domain.com/url ///////// URL2

感谢您的帮助!

3 个答案:

答案 0 :(得分:11)

使用正则表达式:

require 'uri'
url = URI.parse('https://domain.com/////url/url2')
url.path.gsub! %r{/+}, '/'
p url.to_s

答案 1 :(得分:0)

这种模式可以完成这项工作(使用或不使用http):

"https://domain.com/////url/url2".gsub! %r{(?<!:)/+(?=/)}, ''

答案 2 :(得分:0)

其他答案不会从URL中删除斜杠-这对于SEO而言可能很重要。有很多方法可以做到这一点,但是例如:

require 'uri'
url = URI.parse('https://example.com/////url/url2/')
url.path.gsub! %r{/+}, '/'
url.path.sub! %r{/$}, ''

或者:

require 'uri'
url = URI.parse('https://example.com/////url/url2/')
url.path.squeeze!('/')
url.path.chomp!('/')

请参阅:String#squeeze!String#chomp!