Javascript.RU

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

Отлов адресов в тексте
Здравствуйте, столкнулся с таким моментом
необходимо в сообщении найти все урлы и преобразовать в ссылки ..

пишу код:

var mess = data['mess'];

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

var linkReplace = mess.match(url);

var mess = mess.replace(linkReplace, '<a href=' + linkReplace + '>' + linkReplace + '</a>');



Регулярка отрабатывает и находит первое вхождение (например: www.google.com).
Но если например в сообщении два адреса (www.google.com, www.google.com), то уже не отрабатывает ни одно вхождение.

В чем может быть дело? В регулярке поставил флаги и глобального поиска и построчного ... все равно только одно вхождение ...

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

.match() возвращает массив какбэ. А replace принимает аргументом либо строку либо регулярку. Смотри доки по replace'у .
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2013, 15:39
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

var mess = 'Но если например в сообщении два адреса [url]http://www.google.com[/url] и [url]http://www.google.com[/url] то уже не отрабатывает ни одно вхождение';
var url = /((([A-Za-z]{3,9}):\/\/)*?([-;:&=\+\$,\w]+@{1})?(([-A-Za-z0-9]+\.)+[A-Za-z]{2,3})(:\d+)?((\/[-\+~%/\.\w]+)?\/?([&?][-\+=&;%@\.\w]+)?(#[\w]+)?)?)/igm;
mess = mess.replace(url, '<a href="$1">$1</a>');
alert(mess)

регулярное выражение на вашей совести
P.S. форум оборачивает ссылку в bbcode даже в теге js? Странно
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2013, 16:49
Интересующийся
Отправить личное сообщение для TylerDurden Посмотреть профиль Найти все сообщения от TylerDurden
 
Регистрация: 23.10.2012
Сообщений: 18

Спасибо буду дальше пробовать ..
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2013, 10:39
Интересующийся
Отправить личное сообщение для TylerDurden Посмотреть профиль Найти все сообщения от TylerDurden
 
Регистрация: 23.10.2012
Сообщений: 18

да, действительно проблемы была в типах данных ... я когда в replace передал строку (регулярку) то сразу наличие несколько линков начали отрабатывать

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

var linkReplace = mess.match(regUrl);

var mess = mess.replace(url, '<a href=' + linkReplace + ' target="_blank" style="color:#fff;">xxx</a>');


но возникла другая проблема, у меня теперь в href любого линка подставляется сразу все существующие ссылки на странице ...
то есть сообщение ввида "www.google.com и www.ya.ru" в двух ссылках в хрефе вернет href="www.google.com,www.ya.ru"

что не так?

Спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2013, 10:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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

просто если я в href передам "url" (регулярку) она не отрабатывает и не преобразуется ... как иначе тогда ..
Ответить с цитированием
  #8 (permalink)  
Старый 16.10.2013, 11:11
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от TylerDurden
просто если я в href передам "url" (регулярку) она не отрабатывает и не преобразуется ... как иначе тогда ..
Запустите в консоли код из третьего комментария. Всё там отрабатывает и преобразуется
Сообщение от danik.js
Смотри доки по replace'у
Ответить с цитированием
  #9 (permalink)  
Старый 16.10.2013, 12:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

TylerDurden, тебе дали рабочий код. Ты его переделал по-своему и жалуешься что он не работает? Ну и каким словом это назвать?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 16.10.2013, 14:42
Интересующийся
Отправить личное сообщение для TylerDurden Посмотреть профиль Найти все сообщения от TylerDurden
 
Регистрация: 23.10.2012
Сообщений: 18

Да, он действительно работает, не понимаю куда я смотрел ...
Я не жалуюсь.., просто задаю вопросы, спасибо большое за помощь вам!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery highlight plugin — подсветка слов в тексте рони Ваши сайты и скрипты 0 30.07.2013 11:58
подскажите RegExp для замены пустых строк в тексте. mitiya Общие вопросы Javascript 21 07.08.2012 14:02
Изменение в html тексте vladimircape Общие вопросы Javascript 0 18.07.2012 14:21
Поиск определенного слова в тексте faforty Общие вопросы Javascript 4 24.09.2011 15:41
Поиск в тексте javascript jQuery 3 31.05.2011 11:40