Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   поиск ссылок на странице (https://javascript.ru/forum/project/23691-poisk-ssylok-na-stranice.html)

Aetae 05.12.2011 02:43

Цитата:

Сообщение от trikadin (Сообщение 140797)
replace(/<\/?\S*?>/g)

На произвольной странице. Без сброса обработчиков, перезаписи уже имеющихся ссылок и прочих радикальных решений.
Почитай тему.

trikadin 05.12.2011 02:45

Aetae, я её оч внимательно читал всё это время))

Просто какое предложение - такой и ответ))

devote 05.12.2011 10:13

вот все, точно последняя... Оптимизированная версия, удалил из реги часть ненужных правил... Проснулся поглядел на свою работу, и понял что отдыхать нужно точно =))) Много лишнего было напичкано, удалил все лишнее и рега стала немного короче...

var a = [  
    'Привет, на вот зацени ссылку: "http://test.ru/blablablah.html?test=param&qwerty#anchor." это крутая ссыль =) и вот еще [url]www.google.ru[/url], [url]www.tarampampam.com[/url]!!! и вот еще файлик на ФТП ftp://tarampampam.ru/file.zip.',  
    
    'http://translate.google.ru/?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=en&tl=ru&text=Possibly+another+solution+would+be+to+have+the+description+text+hidden+by+default+and+only+shows+when+the+title+is+focused%2Fhovered+over.%0D%0A%0D%0A+Here%27s+an+example%3A+http%3A%2F%2Fwww.1true.co.uk%2Ffastscroll.html&file=#en|ru|blah',  
    
    'http://президент.рф/документы,',  
    
    '"http://testdomen/blabla/" - не заматчило - это by design?',  // не корректная ссылка, нет верхнего домена
    
    'Крутая:http://javascript.ru/forum/project/23691-poisk-ssylok-na-stranice-5.html-ссылка',  
    
    'http://дердымцопцоп,.ru/',  // не корректная ссылка
    
    'http://votrube.ru/uploads/posts/2011-12/1322827006_-(www.votrube.ru)2.jpg',  
    
    'http://yandex.ru-хорошая ссылка',

    'ftp://username:password@domen/blah/', // не корректная нет верхнего домена

    'ftp://username:password@domen.ru/blah/   ghj',

    'ftp://password@domen.ru/blah/',  // допустимая ссылка

    'ftp://username:@domen.ru/blah/',   // допустимая ссылка

    'ftp://username:domen.ru/blah/',  // не корректная ссылка

    'ftp://username@:domen.ru/blah/',  // не корректная ссылка

    'http://blah.ru:8089',

    'http://blah.ru:8080/lalalala/',

    'ftp://username:password@domen.ru:3131/blah/',

    'username:password@domen.ru:3131/blah/.',

    'username:password@domen.ru:/blah/.'
]; 

for( var b, i = 0; i < a.length; i++ ) {
b = a[i].match( /(?:(http(?:s)?|ftp)(:\/\/)(?:[^:]+(?::)?[^@]+@)?|(?:[^:]+(?::)?[^@]+@)?(www(?:[0-9]+)?\.))([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+)\.([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+)(?::[0-9]+)?(?:\/[^\s]+(?!\s|$)[^`~!@#$%^&*()_+|=\\{}\[\];:'"<,.>\-?\s]+)?/ig );
    
alert(b);
}


Все, думаю с меня хватит. что-то я совсем отвлекся не на то =)))
Посмотрим что получиться у Gozar.

Gozar 05.12.2011 14:44

Результат такой:

var a = [  
    'карту[url]http://maps.google.ru/maps/place?q=59.944215,30.307012[/url], блатест Привет, на вот зацени ссылку: "http://test.ru/blablablah.html?test=param&qwerty#anchor." это крутая ссыль =) и вот еще [url]www.google.ru[/url]s,',  
    
    'Привет, на вот зацени ссылку: "http://test.ru/blablablah.html?test=param&qwerty#anchor." это крутая ссыль =) и вот еще [url]www.google.ru[/url], [url]www.tarampampam.com[/url]!!! и вот еще файлик на ФТП ftp://tarampampam.ru/file.zip.',  
    
    'http://translate.google.ru/?js=n&prev=_t&hl=ru&ie=UTF-8&layout=2&eotf=1&sl=en&tl=ru&text=Possibly+another+solution+would+be+to+have+the+description+text+hidden+by+default+and+only+shows+when+the+title+is+focused%2Fhovered+over.%0D%0A%0D%0A+Here%27s+an+example%3A+http%3A%2F%2Fwww.1true.co.uk%2Ffastscroll.html&file=#en|ru|blah',  
    
    'http://президент.рф/документы,',  
    
    '"http://testdomen/blabla/" - не заматчило - это by design?',
    
    'Крутая:http://javascript.ru/forum/project/23691-poisk-ssylok-na-stranice-5.html-ссылка',  
    
    'http://дердымцопцоп,.ru/',
    
    'http://votrube.ru/uploads/posts/2011-12/1322827006_-(www.votrube.ru)2.jpg',  
    
    'http://yandex.ru-хорошая ссылка',

    'http://blah.ru:8089',

    'http://blah.ru:8080/lalalala/'

]; 

for( var b, i = 0; i < a.length; i++ ) {
b = a[i].match(/(?:(?:((http(s)?:\/\/)|(www\.))([-.a-z0-9а-яё]+)?\.[a-zрф]{2,5}(:[0-9]+)?)(?:\/[-\wа-яё.,!?&#$@/:;+=%|^)(*'"><}{\\`~]+[^.,!?\s\["])?)/ig)
    
alert(b);
}


Рега более узко заточена - под русский и английский, не ищет ftp. Т.к. рега для моих нужд, то ftp мне не нужно, кому нужно добавите как у devote или пользуйтесь его регой, если он не против :). По позже протестирую на скорость. Будет не лень, отпишусь.

Gozar 05.12.2011 14:50

Aetae,
Рега нужна для форума, поэтому на подобную вещь можно забить большой пребольшой болт.

devote 05.12.2011 15:30

Цитата:

Сообщение от Gozar
кому нужно добавите как у devote или пользуйтесь его регой, если он не против

Неа, нисколько не против... Смысл мне было сюда это дело писать что бы потом орать что мол моя рега и никому не пользоваться :D Пользуйтесь на здоровье, при желании можно ее еще уменьшить/расширить. Скорость проверять не буду, лень если честно. :)


Часовой пояс GMT +3, время: 06:09.