Проверьте структуру URL, имеющего или не имеющего http / https - Ruby on rails - PullRequest
0 голосов
/ 11 мая 2019

Как проверить правильность структуры URL-адреса? URL-адреса могут содержать или не содержать http или https.

Например:

  • www.google.com - действителен
  • https://www.google.com - действителен
  • www.google, com - недействителен
  • www.google - недействителен

Я пробую код этого вопроса:

Проверка для URL / домена с использованием Regex?(Rails)

validates :url_soporte, :url_privacidad, :web_site, :format => {
      :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix,
      :message => 'You provided invalid URL'
  }, :allow_blank => true

Я получаю эту ошибку:

Предоставленное регулярное выражение использует многострочные якоря (^ или $), которые могут представлять угрозу безопасности.Вы хотели использовать \ A и \ z, или забыли добавить параметр: multiline => true?

, а URI.regexp не работает для меня

Как я могуисправить это?

1 Ответ

0 голосов
/ 11 мая 2019

Зачем все усложнять регулярным выражением?

У вас может быть собственный валидатор, который только что создал ресурс URI и подтвердил, что у него есть хост?

def validate_url(url)
  uri = URI.parse(url)

  # raise errors if uri.host is nil
end

Таким образом, вы можете оставить пакет uri, чтобы беспокоиться о том, есть ли у вас действительный домен в вашем URL, вместо того, чтобы пытаться реплицировать регулярное выражение самостоятельно.

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