/ Published in: Ruby
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
# return 4 urls, with and without trailing slash, with and without www # useful for matching urls passed as params into some function, # "does this url exist?"... need to make sure you check permutations def url_permutations(url) url, params = url.split("?") # without_trailing_slash, with www a = url.gsub(/\/$/, "").gsub(/http(s)?:\/\/([^\/]+)/) do |match| protocol = "http#{$1.to_s}" domain = $2 domain = "www.#{domain}" if domain.split(".").length < 3 # www.google.com == 3, google.com == 2 "#{protocol}://#{domain}" end # with_trailing_slash, with www b = "#{a}/" # without_trailing_slash, without www c = a.gsub(/http(s)?:\/\/www\./, "http#{$1.to_s}://") # with_trailing_slash, without www d = "#{c}/" [a, b, c, d].map { |url| "#{url}?#{params}"} end puts url_permutations("http://google.com/search?q=http://google.com").inspect #=> [ "http://www.google.com/search?q=http://google.com", "http://www.google.com/search/?q=http://google.com", "http://google.com/search?q=http://google.com", "http://google.com/search/?q=http://google.com" ]
URL: regular-expression-to-create-url-permutations-in-ruby