04.12.2011, 23:11
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Вот начирикал последний вариант, удаляет знаки препинания и вские там символы в конце ссылки...
var a = [
'Привет, на вот зацени ссылку: "http://test.ru/blablablah.html?test=param&qwerty#anchor." это крутая ссыль =) и вот еще www.google.ru, www.tarampampam.com!!! и вот еще файлик на ФТП 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-хорошая ссылка'
];
for( var b, i = 0; i < a.length; i++ ) {
b = a[i].match( /(?:(http(?:s)?|ftp)(:\/\/)|(www(?:[0-9]+)?\.))((?:([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+)\/[^\s]+(?!\s|$)[^`~!@#$%^&*()_+|=\\{}\[\];:'"<,.>\-?\s]+)|([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+))/ig );
alert(b);
}
Последний раз редактировалось devote, 04.12.2011 в 23:49.
Причина: Собрал все тестовые ссылки по топику
|
|
04.12.2011, 23:19
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Ну хоть такая рега покатит вам? Щас она убивает знаки препинания не нужные в конце ссыли. И реверсов не надо делать.
|
|
04.12.2011, 23:57
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
хотя есть ссылки содержащие имя пользователя и пароль в ссылке, для этого можно убрать из запрещенных два символа ":@" тоесть двоеточие и сабаку.
примерно так:
var a = '"ftp://username:password@domen.net/path/path/file.dat"'.
match( /(?:(http(?:s)?|ftp)(:\/\/)|(www(?:[0-9]+)?\.))((?:([^`~!#$%^&*()_+|=\\{}\[\];'"<,>?\/\s]+)\/[^\s]+(?!\s|$)[^`~!@#$%^&*()_+|=\\{}\[\];:'"<,.>\-?\s]+)|([^`~!#$%^&*()_+|=\\{}\[\];'"<,>?\/\s]+))/ig );
alert(a);
|
|
05.12.2011, 00:01
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
devote,
Всё хорошо, за исключением того, что это http://дердымцопцоп она найти не должна была. Спасибо за участие. Твоей регой можно будет прогонять ссылку как дополнительным фильтром, без реверса. Хотя возможно это не потребуется, если немного изменить первую часть.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 05.12.2011 в 00:07.
|
|
05.12.2011, 00:14
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Gozar,
Хоть покажешь полный результат? Когда закончишь делать полноценный фильтр ссылок. А насчет то ссыли, можно добавить что бы он не хватал локальные ссылки, тоесть без домена первого уровня. Это примерно так:
var a = [
'Привет, на вот зацени ссылку: "http://test.ru/blablablah.html?test=param&qwerty#anchor." это крутая ссыль =) и вот еще www.google.ru, www.tarampampam.com!!! и вот еще файлик на ФТП 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-хорошая ссылка'
];
for( var b, i = 0; i < a.length; i++ ) {
b = a[i].match( /(?:(http(?:s)?|ftp)(:\/\/)|(www(?:[0-9]+)?\.))([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+)\.((?:([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+)\/[^\s]+(?!\s|$)[^`~!@#$%^&*()_+|=\\{}\[\];:'"<,.>\-?\s]+)|([^`~!@#$%^&*()_+|=\\{}\[\];:'"<,>?\/\s]+))/ig );
alert(b);
}
|
|
05.12.2011, 00:25
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от devote
|
Хоть покажешь полный результат?
|
Ок, только это два разных результата, для одного из которых подходит и твоя рега, может я её немного конкретизирую, а второй результат может быть получен не так скоро как хотелось бы, поэтому если вспомню, то отпишусь обязательно.
Первую регу может завтра выложу, попробую сократить твою. Идею твою я понял и рега должна получиться короче.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 05.12.2011 в 00:41.
|
|
05.12.2011, 00:47
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Вот полностью законченный вариант, ну по крайней мере на мой взгляд, можно смело юзать.
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);
}
Последний раз редактировалось devote, 05.12.2011 в 00:56.
Причина: добавил номера портов...
|
|
05.12.2011, 00:57
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
номера портов добавил... про них то я подзабыл)))
|
|
05.12.2011, 02:09
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,584
|
|
А теперь ещё придумайте как оборачивать такие ссылки:
http://<u>www.<b>google</b>.ru</u>/#q=trololo
*trollface.jpg*
__________________
29375, 35
|
|
05.12.2011, 02:24
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
replace(/<\/?\S*?>/g)
|
|
|
|