Ruby url regex, «если http не включен» не работает - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть следующий метод для добавления http: // в начало URL, если его еще нет:

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

Это работает, только если нет http (s), но когдаhttp: // уже включен, он все еще добавляет его, и я получаю два из них, а когда https: // уже включен, он вообще не возвращает URL!

Я допустил ошибку в своем регулярном выражении

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

Вы должны изменить регулярное выражение на:

^https?:\/\/

Тест здесь .

1 голос
/ 24 февраля 2012

Решение без регулярных выражений:

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

конструкция ? : - это короткий способ записи if .. then..else..end.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...