Тема: RegEx / Match
Показать сообщение отдельно
  #1 (permalink)  
Старый 14.02.2013, 18:32
Аспирант
Отправить личное сообщение для gJam Посмотреть профиль Найти все сообщения от gJam
 
Регистрация: 21.07.2011
Сообщений: 92

RegEx / Match
Добрый день!

В соседнем топике решился вопрос с нахождением всех элементов удовлетворяющих RegEx'у (с помощью match), но применив на практике столкнулся с рядом проблем:

Массив который мы получаем более чем на 50% состоит из пустых элементов - но это мелочи, но так же мы ловим странные элементы, хотя на онлайн-тестерах RegEx'ов, да и на своей практике - все работает верно, что делать?

Регулярка:
Код:
^(((https?)|(ftp)):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
Цель: найти все ссылки в строке с путями или без, а так же в различном написании (http/https/ftp) и с www или без

Код:
http://www.sitename.domain/dir/dir2/file.jpg
www.sitename.domain/dir/file.jpg
dasd.asdas/~sad.js
sub.sitename.domain/dir/dir2/file.jpg
site.do/file.pjg
htttp://google.com/ansdjnaskd/najskd/inasd.jf
https://go.do/dir/file.png
ftp://site.dom/file.blah_blah
корректно работает на этом

Но например ссылку site.do/file.pjg и текст polly (site.do/file/pjg polly)
Match видит как:
Код:
site.do/file/pjg polly| undefined| undefined| undefined| undefined| site| do| /file/pjg polly| undefined|
Где | - разделитель элементов массива

С двумя/более ссылками в строке - тихий ужас
Ответить с цитированием