Показать сообщение отдельно
  #1 (permalink)  
Старый 30.06.2012, 13:00
Новичок на форуме
Отправить личное сообщение для Overflow Посмотреть профиль Найти все сообщения от Overflow
 
Регистрация: 30.06.2012
Сообщений: 6

Логика регулярных выражений
Товарищи форумчане! Помогите, пожалуйста, понять логику работы регулярки на данном примере:

На вход подается ссылка на картинку определенного формата. На выходе должна выйти ссылка без протокола и query_string.

Пример: подаем http://site.ru/folder/picture.jpg?query&string или https://site.ru/folder/picture.jpg
На выходе получаем site.ru/folder/picture.jpg

Код:
if(document.getElementById('element_input').value.toLowerCase().indexOf('://', 0) > -1){
	picture = document.getElementById('element_input').value.match(/\:\/\/(.+?)\.(jpg|jpeg|png|bmp|gif)/i);
}else{
	picture = document.getElementById('element_input').value.match(/(.+?)\.(jpg|jpeg|png|bmp|gif)/i);
}

// на выходе picture[1] + "." + picture[2]


Да, этот код рабочий, но.. можно его как-то усовершенствовать убрав поиск через indexOf и переместив его в само регулярное выражение?
Попытки вроде
picture = document.getElementById('element_input').value.match(/(?:\:\/\/)??(.+?)\.(jpg|jpeg|png|bmp|gif)/i);

возвращают picture[1] вместе с возможным ://, а так быть не должно (должна быть "чистая" ссылка на картинку).

Собственно вопросы:
1. Почему picture[1] захватывает ://?
2. Как это исправить?

Заранее спасибо!
Ответить с цитированием