01.04.2015, 08:54
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
регексп ссылок
добрый день добрые люди)
есть рег /^(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 - находил
если одним рег выражением это невозможно реализовать, пусть будет две, три.. но чтобы результат был таким, как описал
спасибо заранее
|
|
01.04.2015, 09:25
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Tecvid
|
так, чтобы:
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)));
};
|
|
01.04.2015, 09:45
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
отлично, спасибо большое! то что нужно
|
|
01.04.2015, 10:41
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
ваша регулярка перестала работать если передать строку вроде "посетите мой сайт: http://site.com"; :/
я хочу проверить тексты на наличие ссылок (вроде которых упомянул выше), и если найдётся, то их в тексте заменить на <a>, а остальной текст не трогать, например строка выше должен стать "посетите мой сайт": <a href=\"http://site.com\">http://site.com</a>";
а код такой текст оставляет как есть, но если до ссылки ничего нет, текст идёт только после ссылки, то он берёт весь текст в тег <а>
|
|
01.04.2015, 11:06
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Tecvid
|
я хочу проверить тексты на наличие ссылок (вроде которых упомянул выше)
|
Аааа. Убери ^ из регэкспа... Она означает "начало строки".
|
|
01.04.2015, 11:18
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Такой вариант для работы с текстом...
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) вставляет уже сам редактор...
Последний раз редактировалось ksa, 01.04.2015 в 11:20.
|
|
01.04.2015, 11:21
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
так, эта проблема решена) благодарю)
остался теперь заменить только совпадения на якорь, а не всю строку, и ещё, чуть не забыл, хочу исключить запятую, чтоб в "www.site.com," взял только саму ссылку, а то он и запятую включает :/
|
|
01.04.2015, 11:22
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
А так...
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;
};
|
|
01.04.2015, 11:23
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Tecvid
|
чтоб в "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;
};
|
|
01.04.2015, 11:26
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
пока писал, ответ уже дали огромное спасибо очень вам признателен)
|
|
|
|