Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.11.2013, 13:11
Интересующийся
Отправить личное сообщение для TylerDurden Посмотреть профиль Найти все сообщения от TylerDurden
 
Регистрация: 23.10.2012
Сообщений: 18

Замена одинаковых ссылок в тексте
Здравствуйте, у меня есть код, который весь текст урло подобный обромляет в тег <a>.

var mess = data['msgText'];

var reg = /((([A-Za-z]{3,9}):\/\/)*?([-;:&=\+\$,\w]+@{1})?(([-A-Za-z0-9]+\.)+[A-Za-z]{2,3})(:\d+)?((\/[-\+~%\.\w]+)?\/?([&?][-\+=&;%@\.\w]+)?(#[\w]+)?)?)/igm
pregMatch = mess.match(reg);

var regHttp = /http/igm;

for(var key in pregMatch){
	var val = pregMatch[key];
	if(regHttp.test(val) == true){
		mess = mess.replace(val, '<a href="' + val + '>' + val + '</a>');
	}else{
		mess = mess.replace(val, '<a href="http://' + val + '>' + val + '</a>');
	}
}



Проблема в том, что передавая в mess сообщение типа
"ya.ru, www.google.com" обрамляются в тег и отрабатывают нормально

НО

если в mess присутствует например две полностью одинаковых ссылки типа "www.google.com, www.google.com", то уже работает не корректно, т. к. он в первый заход делает правильно замену, во второй - опять же ещё раз первую позицию пытается заменить ...

Может быть есть какие-то очевидные варианты реализации ..

За любую помощь буду благодарен,
Спасибо.

Последний раз редактировалось TylerDurden, 04.11.2013 в 13:14.
Ответить с цитированием
  #2 (permalink)  
Старый 04.11.2013, 13:53
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от TylerDurden
Может быть есть какие-то очевидные варианты реализации ..
Очевидный вариант - сразу использовать регулярку первым аргументом в replace (тогда надобность match'а отпадает)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2013, 14:47
Интересующийся
Отправить личное сообщение для TylerDurden Посмотреть профиль Найти все сообщения от TylerDurden
 
Регистрация: 23.10.2012
Сообщений: 18

Он тогда после реплейса выдает регулярку ...

вот пример живой, что бы было понятней

http://jsfiddle.net/qGXjh/1/
Ответить с цитированием
  #4 (permalink)  
Старый 04.11.2013, 16:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Я не вижу там реплейса с регуляркой, зато вижу матч по-прежнему...
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2013, 18:00
Интересующийся
Отправить личное сообщение для TylerDurden Посмотреть профиль Найти все сообщения от TylerDurden
 
Регистрация: 23.10.2012
Сообщений: 18

http://jsfiddle.net/zWznS/3/

да вот с чистым реплейсом без матча ..
работает, но в коде есть момент - текстовым ссылкам без http:// добавлять его ...
подскажите тогда как правильно делать в данном случае, т. к. с массивом (мачем) я сделал, как тогда без него?
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2013, 19:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

... а вторым аргументом - функцию.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена текста в тексте martinss Общие вопросы Javascript 3 26.04.2011 15:41
замена в тексте Артем125 Javascript под браузер 7 24.09.2010 18:09
Замена ссылок на картинки самими картинками shipitko Общие вопросы Javascript 3 23.07.2010 19:49
Подсветка гипер ссылок в тексте hmel Элементы интерфейса 0 05.10.2009 21:05
Замена слов в тексте Dan T Общие вопросы Javascript 8 18.03.2009 12:36