
16.11.2011, 16:35
|
|
Аспирант
|
|
Регистрация: 03.11.2011
Сообщений: 42
|
|
|
Помогите "допилить" регулярку.
Здравствуйте!
Вот такая регулярка для поиска текстовых ссылок на определенные сайты:
|
Код:
|
/((?:https?\:\/\/)*w*\.*(?:imdb|nfomation|youtube|nfo\.sceper)\.[\w\d:#@%/;$()~_?\+-=\\\.&]*)/gi; |
Но иногда за текстом ссылки без пробела следует тег <br \>, либо <!--
Естественно, теги прилипают к ссылке.
Пробовал добавить в конец регулярки [^(?:<br)|(?:<\!\-\-] - не работает. (?=(?:<br //>)) - тоже не работает.
Подскажите, пожалуйста, как сделать?
Спасибо!
|
|

16.11.2011, 16:59
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
|
Какого типа ссылки надо найти? Приведите примеры, чем больше, тем лучше. Насколько я понял, к тому же, надо их разделять по частям - отдельно протокол, отдельно домен, отдельно querystring и т.д.?
|
|

16.11.2011, 17:50
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,155
|
|
nule,
Вариант...
var a = 'http://youtube.ru/<br>',
s = a.replace(/((?:https?\:\/\/)*w*\.*(?:imdb|nfomation|youtube|nfo\.sceper)\.[^<\s$]*)/gi, "");
alert(s)
|
|

16.11.2011, 18:53
|
|
Аспирант
|
|
Регистрация: 03.11.2011
Сообщений: 42
|
|
Сообщение от trikadin
|
|
Какого типа ссылки надо найти? Приведите примеры, чем больше, тем лучше. Насколько я понял, к тому же, надо их разделять по частям - отдельно протокол, отдельно домен, отдельно querystring и т.д.?
|
Разделять не требуется. Регулярка в таком виде находит все нужные мне ссылки, к этому претензий нет. Единственная недоработка проявляется в случае, когда за ссылкой без пробела следует закрывающий тег <br />. Тогда результатом является "ссылка<br". Надо, чтобы регулярка прекращала обработку, дойдя до "<br".
Сообщение от рони
|
nule,
Вариант...
var a = '<a href="http://clcstatistic.gofreeserve.com/install.php?go_uri=http://youtube.ru/<br>'"target="newtab">http://youtube.ru/<br>'</a>,
s = a.replace(/((?:https?\:\/\/)*w*\.*(?:imdb|nfomation|youtube|nfo\.sceper)\.[^<\s$]*)/gi, "");
alert(s)
|
Вариант, но пока надеюсь проще сделать, без "ампутации" 
|
|

16.11.2011, 19:35
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
А можно я её чуток перепишу?
str= "https://www.youtube.com?bla=true\\lla%@12300&bulab=567#page=11<br>";
reg= /(?:https?:\/\/)?w*\.?(?:imdb|nfomation|youtube|nfo\.sceper)\.[\w\d:#@%/;\$()\\~=\?\+-\.&]*/gi
alert(str.match(reg));
|
|

16.11.2011, 19:59
|
|
Аспирант
|
|
Регистрация: 03.11.2011
Сообщений: 42
|
|
Сообщение от trikadin
|
А можно я её чуток перепишу?
str= "<a href="http://clcstatistic.gofreeserve.com/install.php?go_uri=https://www.youtube.com?bla=true\\lla%@12300&bulab=567#page=11<br>"target="newtab">https://www.youtube.com?bla=true\\lla%@12300&bulab=567#page=11<br></a>";
reg= /(?:https?:\/\/)?w*\.?(?:imdb|nfomation|youtube|nfo\.sceper)\.[\w\d:#@%/;\$()\\~=\?\+-\.&]*/gi
alert(str.match(reg));
|
У меня было +-=, а это диапазон символов, включающий в себя <.
Спасибо!
|
|

16.11.2011, 20:05
|
 |
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
|
Сообщение от nule
|
У меня было +-=, а это диапазон символов, включающий в себя <.
Спасибо!
|
Ахах! Надо было просто заслешить минус.
Последний раз редактировалось trikadin, 16.11.2011 в 20:10.
|
|
|
|