Javascript конвертировать [url =] в HTML ссылку

0

В настоящее время я пытаюсь преобразовать это:

[url=http://example.com] this is a link [/url]

к стандартной ссылке html:

<a href=http://example.com>this is a link</a>

Пока я могу преобразовать строку url в ссылку, однако [url=] [/url] все еще остается, и я не уверен, как его отфильтровать.

message.replace(/(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1'>$1</a>")

Как я могу отфильтровать [url=] [/url] в регулярном выражении, а также убедиться, что this is a link (текст, определенный пользователем) также остается?

Теги:

2 ответа

5
Лучший ответ

Вам просто нужно добавить его в regex для замены:

message.replace(/\[url=(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])\]/ig, "<a href='$1'>$1</a>")
                 ^^^^^^

Хотя у вас все еще есть последний тег url, и вы можете упростить работу с отмененными классами:

message.replace(/\[url=([^\]]+)\]\s*(.*?)\s*\[\/url\]/ig, "<a href='$1'>$2</a>")

regex101 demo

EDIT: сделал закрывающий тег буквальным из-за потенциальных других тегов

  • 0
    Спасибо Джерри, это работает как шарм :)
  • 0
    @ Лоддер Не за что :)
0

Я бы сделал это в 3 этапа:

  • Замените [url= с <a href="
  • Замените [/url] на </a>
  • Заменить ] с помощью ">

Но это просто мнение. Мне обычно нравится держать его простым и переходить к следующей проблеме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню