Показать сообщение отдельно
  #12 (permalink)  
Старый 02.07.2012, 19:20
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от Overflow
Спасибо за ответ! Не подскажите, почему часть с http
str2=str.replace(/(?:http:\/\/)?(.*)\.(jpg|jpeg|png|bmp|gif).*$/ig,'$1.$2'); //

работает на ура, а с отслеживанием "://" без символов букв
str2=str.replace(/(?:\:\/\/)?(.*)\.(jpg|jpeg|png|bmp|gif).*$/ig,'$1.$2'); //

"бракует" ("http://" помещается в $1, первая группировка её не видит)? Интересует именно почему :// игнорируются первым группированием, а если группировать http:// - то нет.
Потому, что как в первом, так и во втором случае регулярка подходит с 0-го индекса, в первом случае подвыражение (?:http:\/\/)? ловит "http://", во втором случае (?:\:\/\/)? ловит "", то есть квантификатор сработал на 0.
Здесь важный момент: все возможности для подвыражения с квантификатором проверяются вначале, лишь если от текущего индекса ничего не нашлось, интерпретатор начинает искать со следующего индекса.
Сообщение от devote
потому что вы делаете replace а не match
Этот ответ неправильный, так как match ловит те же самые подстроки, что и replace.

Последний раз редактировалось oneguy, 02.07.2012 в 19:30.
Ответить с цитированием