RegEx / Match
Добрый день!
В соседнем топике решился вопрос с нахождением всех элементов удовлетворяющих RegEx'у (с помощью match), но применив на практике столкнулся с рядом проблем: Массив который мы получаем более чем на 50% состоит из пустых элементов - но это мелочи, но так же мы ловим странные элементы, хотя на онлайн-тестерах RegEx'ов, да и на своей практике - все работает верно, что делать? Регулярка: Код:
^(((https?)|(ftp)):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$ Код:
http://www.sitename.domain/dir/dir2/file.jpg Но например ссылку 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| С двумя/более ссылками в строке - тихий ужас |
что на входе?
|
Цитата:
|
Цитата:
|
Ввожу:
site.do/file/pjg polly Получаю массив разделенный | site.do/file/pjg polly| undefined| undefined| undefined| undefined| site| do| /file/pjg polly| undefined| |
gJam,
str = 'http:\/\/www.sitename.domain\/dir\/dir2\/file.jpg \ http:\/\/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 \ site.do/file/pjg polly \ ftp:\/\/site.dom\/file.blah_blah' reg = /(^|\s)(((https?)|(ftp)):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})(\/[~\w\.-]*)*\/?/gim alert(str.match(reg).join('\n')) |
function LinkRepL (a) { var b = a.split(/^(?:[^.:\/]*?[.:])?(?:\/\/){0,1}|\/(?!\/)/ig).join('|'); if(b==a) return false; return b; } var arr =[ '//www.sitename.domain/dir/dir2/file.jpg', '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' ] for (var i=0; i<arr.length; i++) { alert(LinkRepL (arr[i]) ); } |
Часовой пояс GMT +3, время: 15:21. |