Товарищи форумчане! Помогите, пожалуйста, понять логику работы регулярки на данном примере:
На вход подается ссылка на картинку определенного формата. На выходе должна выйти ссылка без протокола и 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. Как это исправить?
Заранее спасибо!