Задать вопрос
Cheizer
@Cheizer

Как на jquery в тексте найти ники соцсетей @name и обернуть их ссылкой?

Как в тексте на странице, найти все ники и обернуть их ссылкой? Они могут быть разные, такого типа: @nikname.

Например, есть текст:

<div class="text">Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне @username_1 . Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века @username_2. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, @username_3 используя Lorem Ipsum для распечатки образцов. </div>


А в результате получить такой вариант, ники обернуты ссылками с соответствующими адресами:

<div class="text">Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне <a href="https://site.ru/username_1">@username_1</a> . Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века <a href="https://site.ru/username_2">@username_2</a>. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, <a href="https://site.ru/username_3">@username_3</a> используя Lorem Ipsum для распечатки образцов. </div>
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 2
megakor
@megakor
Senior Go developer at VK Video
Через регулярные выражения.
Дам подсказку: /^@\w+/
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
Чей текст надо модифицировать и как это будет сделано:

const selector = '.text';
const regex = /@(\w+)/g;
const replacement = '<a href="https://site.com/$1">$&</a>';
const replace = str => str.replace(regex, replacement);

Вот так всё просто получается:

$(selector).html(function() {
  return replace($(this).text());
});

// или

document.querySelectorAll(selector).forEach(n => {
  n.innerHTML = replace(n.innerText);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы