Как заменить часть входного значения? - PullRequest
1 голос
/ 04 мая 2011

У меня есть поле ввода, где пользователь может разместить ссылку на страницу в 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

Я хочу, чтобы только следующие четыре версии прошли проверку:

Тогда я хочу только сохранить часть "redbull" в базе данных. Я пытался Rubular , но я не могу понять логику регулярного выражения.

Заранее спасибо

Нашли решение, спасибо Кейли:

  URL_regex = /\A((http|https):\/\/)?(www\.)?facebook\.com\/([\S]+)/i

Ответы [ 4 ]

1 голос
/ 04 мая 2011

Вы уже получили хорошие ответы для регулярных выражений, но я хотел бы отметить модуль 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"

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

1 голос
/ 04 мая 2011

Это будет соответствовать только 4 вариантам, которые вы предложили, плюс http://facebook.com/redbull и https://facebook.com/redbull, так как они также могут быть общими вариантами.

/\A((http|https):\/\/)?(www\.)?facebook\.com\/(\w*)?/i
0 голосов
/ 04 мая 2011

Ты почти у цели. Вам просто нужно добавить еще одну группу захвата.

\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
0 голосов
/ 04 мая 2011

Без RegEx вы можете использовать его:

var your_url = ''; //here, you place your URL

console.log(your_url.slice(your_url.lastIndexOf('/') + 1));

Это даст желаемый результат.

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