Отлов адресов в тексте
Здравствуйте, столкнулся с таким моментом
необходимо в сообщении найти все урлы и преобразовать в ссылки .. пишу код: 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), то уже не отрабатывает ни одно вхождение. В чем может быть дело? В регулярке поставил флаги и глобального поиска и построчного ... все равно только одно вхождение ... Спасибо. |
.match() возвращает массив какбэ. А replace принимает аргументом либо строку либо регулярку. Смотри доки по replace'у .
|
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? Странно |
Спасибо буду дальше пробовать ..
|
да, действительно проблемы была в типах данных ... я когда в 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" что не так? Спасибо. |
TylerDurden,
вы определитесь массив перезаписывать или строку. |
просто если я в href передам "url" (регулярку) она не отрабатывает и не преобразуется ... как иначе тогда ..
|
Цитата:
Цитата:
|
TylerDurden, тебе дали рабочий код. Ты его переделал по-своему и жалуешься что он не работает? Ну и каким словом это назвать?
|
Да, он действительно работает, не понимаю куда я смотрел ...
Я не жалуюсь.., просто задаю вопросы, спасибо большое за помощь вам! |
Часовой пояс GMT +3, время: 01:08. |