#jquery #ruby #ruby-on-rails-3
#jquery #ruby #ruby-on-rails-3
Вопрос:
У меня есть поле ввода, в котором пользователь может разместить ссылку на страницу facebook. Прямо сейчас я использую регулярное выражение для проверки URL.
URL_regex = /A(http|https|ftp)://([w]*).([w]*).(com|net|org|biz|info|mobi|us|cc|bz|tv|ws|name|co|me)(.[a-z]{1,3})?/i
Я хочу, чтобы проверку прошли только следующие четыре версии:
https://www.facebook.com/redbull
http://www.facebook.com/redbull
www.facebook.com/redbull
facebook.com/redbull
Тогда я хочу сохранить только часть «redbull» в базе данных. Я попробовал Rubular, но я не могу понять логику регулярного выражения.
Заранее спасибо
Найдено решение, спасибо Кейли:
URL_regex = /A((http|https)://)?(www.)?facebook.com/([S] )/i
Ответ №1:
Это будет соответствовать только 4 предложенным вами вариантам, плюс http://facebook.com/redbull
и https://facebook.com/redbull
, поскольку они также могут быть распространенными вариантами.
/A((http|https)://)?(www.)?facebook.com/(w*)?/i
Ответ №2:
Вы уже получили хорошие ответы по регулярным выражениям, но я хотел бы указать на URI
модуль:
>> require 'uri'
#=> true
>> uri = URI.parse "https://www.facebook.com/redbull"
#=> #<URI::HTTPS:0x000001010a41a8 URL:https://www.facebook.com/redbull>
>> uri.scheme
#=> "https"
>> uri.host
#=> "www.facebook.com"
>> uri.path
#=> "/redbull"
Возможно, проверять отдельные части проще, чем одно большое регулярное выражение.
Ответ №3:
Вы можете использовать его без регулярных выражений:
var your_url = ''; //here, you place your URL
console.log(your_url.slice(your_url.lastIndexOf('/') 1));
Это даст желаемый результат.
Ответ №4:
Вы почти на месте. Вам просто нужно добавить другую группу захвата.
A(http|https|ftp)://([w]*).([w]*).(com|net|org|biz|info|mobi|us|cc|bz|tv|ws|name|co|me)/(w )?
или
(http|https:ftp://)?w*.w .(com|net|org|biz|info|mobi|us|cc|bz|tv|ws|name|co|me)/(w )
irb(main):014:0> if x =~ /A(http|https|ftp)://([w]*).([w]*).(com|net|org|biz|info|mobi|us|cc|bz|tv|ws|name|co|me)/(w )?/
irb(main):015:1> puts $5
irb(main):016:1> end
redbull
=> nil