Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.04.2015, 08:54
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 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 - находил

если одним рег выражением это невозможно реализовать, пусть будет две, три.. но чтобы результат был таким, как описал

спасибо заранее
Ответить с цитированием
  #2 (permalink)  
Старый 01.04.2015, 09:25
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от 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)));
};
Ответить с цитированием
  #3 (permalink)  
Старый 01.04.2015, 09:45
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

отлично, спасибо большое! то что нужно
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2015, 10:41
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

ваша регулярка перестала работать если передать строку вроде "посетите мой сайт: http://site.com"; :/
я хочу проверить тексты на наличие ссылок (вроде которых упомянул выше), и если найдётся, то их в тексте заменить на <a>, а остальной текст не трогать, например строка выше должен стать "посетите мой сайт": <a href=\"http://site.com\">http://site.com</a>";
а код такой текст оставляет как есть, но если до ссылки ничего нет, текст идёт только после ссылки, то он берёт весь текст в тег <а>
Ответить с цитированием
  #5 (permalink)  
Старый 01.04.2015, 11:06
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от Tecvid
я хочу проверить тексты на наличие ссылок (вроде которых упомянул выше)
Аааа. Убери ^ из регэкспа... Она означает "начало строки".
Ответить с цитированием
  #6 (permalink)  
Старый 01.04.2015, 11:18
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Такой вариант для работы с текстом...

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.
Ответить с цитированием
  #7 (permalink)  
Старый 01.04.2015, 11:21
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

так, эта проблема решена) благодарю)
остался теперь заменить только совпадения на якорь, а не всю строку, и ещё, чуть не забыл, хочу исключить запятую, чтоб в "www.site.com," взял только саму ссылку, а то он и запятую включает :/
Ответить с цитированием
  #8 (permalink)  
Старый 01.04.2015, 11:22
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

А так...

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;
};
Ответить с цитированием
  #9 (permalink)  
Старый 01.04.2015, 11:23
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от 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;
};
Ответить с цитированием
  #10 (permalink)  
Старый 01.04.2015, 11:26
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

пока писал, ответ уже дали огромное спасибо очень вам признателен)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить тексты ссылок текстами из тегов span при нажатии All_ex74 Элементы интерфейса 13 28.08.2014 08:16
Сервис сокращения ссылок LinkAC Ваши сайты и скрипты 0 05.01.2013 19:39
формирование ссылок на все каталоги пути данного HTML документа vitaxa3581 Общие вопросы Javascript 2 15.12.2012 02:06
поиск ссылок на страничке serjava Работа 4 06.11.2010 08:57
Создание фильтра базы ссылок с помощью регулярных выражений SvetozarPNZ Events/DOM/Window 8 28.10.2010 13:15