Вот полностью законченный вариант, ну по крайней мере на мой взгляд, можно смело юзать.
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/',
'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/'
];
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]+)|([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+)(?::[0-9]+)?)/ig );
alert(b);
}