регексп ссылок
добрый день добрые люди)
есть рег /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ но он не работает так, как я хочу, находит абсолютно все ссылки, и даже a.bb поспринимает как ссылку, поэтому надо его изменить так, чтобы: http://site.com (или с https) - находил www.site.com, m.site.com и тому подобное - находил site.com - НЕ находил но если: site.com/blabla - находил если одним рег выражением это невозможно реализовать, пусть будет две, три.. но чтобы результат был таким, как описал спасибо заранее :) |
Цитата:
var re=[ /^((https?:\/\/)|(www\.))[a-z]+\.[a-z]+/, /(^[a-z]+\.[a-z]+)(?=\/[a-z]+)/ ]; var a=[ 'http://site.com', 'https://site.com', 'www.site.com', 'site.com', 'site.com/blabla' ]; for (var i=0; i<a.length; i++) { check(a[i]); }; function check(Str) { alert(Str+' = '+(re[0].test(Str)||re[1].test(Str))); }; |
отлично, спасибо большое! то что нужно :)
|
ваша регулярка перестала работать если передать строку вроде "посетите мой сайт: http://site.com"; :/
я хочу проверить тексты на наличие ссылок (вроде которых упомянул выше), и если найдётся, то их в тексте заменить на <a>, а остальной текст не трогать, например строка выше должен стать "посетите мой сайт": <a href=\"http://site.com\">http://site.com</a>"; а код такой текст оставляет как есть, но если до ссылки ничего нет, текст идёт только после ссылки, то он берёт весь текст в тег <а> |
Цитата:
|
Такой вариант для работы с текстом...
var txt='посетите мой сайт: http:\/\/site.com или [url]www.site.com[/url]. Т.к. наш site.com самый лучший и в нем есть папочка site.com\/blabla...'; alert(check(txt)); function check(Str) { var re=[ /(((https?:\/\/)|(www\.))[a-z]+\.[a-z]+)/g, /([a-z]+\.[a-z]+\/[a-z]+)/g ]; for (var i=0; i<re.length; i++){ Str=Str.replace(re[i],'<a href="$1">$1<\/a>'); }; return Str; }; P.S. BBкод (url) вставляет уже сам редактор... |
так, эта проблема решена) благодарю)
остался теперь заменить только совпадения на якорь, а не всю строку, и ещё, чуть не забыл, хочу исключить запятую, чтоб в "www.site.com," взял только саму ссылку, а то он и запятую включает :/ |
А так...
var txt='посетите мой сайт: http:\/\/site.com или www\.site\.com. Т.к. наш site.com самый лучший и в нем есть папочка site.com\/blabla...'; alert(check(txt)); function check(Str) { var re=[ /(((https?:\/\/)|(www\.))[a-z]+\.[a-z]+)/g, /([a-z]+\.[a-z]+\/[a-z]+)/g ]; for (var i=0; i<re.length; i++){ Str=Str.replace(re[i],'<a href="$1">$1<\/a>'); }; return Str; }; |
Цитата:
var txt='посетите мой сайт: http:\/\/site.com или www\.site\.com, т.к. наш site.com самый лучший и в нем есть папочка site.com\/blabla...'; alert(check(txt)); function check(Str) { var re=[ /(((https?:\/\/)|(www\.))[a-z]+\.[a-z]+)/g, /([a-z]+\.[a-z]+\/[a-z]+)/g ]; for (var i=0; i<re.length; i++){ Str=Str.replace(re[i],'<a href="$1">$1<\/a>'); }; return Str; }; |
пока писал, ответ уже дали :) огромное спасибо :) очень вам признателен)
|
Часовой пояс GMT +3, время: 11:44. |