Как заменить определенные символы переноса текста тегами span?
Желаемое поведение
замещать ::text::
с <span>text</span>
,
Например, задана строка вроде:
Here is a ::test span:: and another ::span::, colons in this context eg:
http://somelink.com are not effected.
Как можно ::
символы должны быть заменены открытием и закрытием <span>
теги как это:
Here is a <span>test span</span> and another <span>span</span>, colons
in this context eg: http://somelink.com are not effected.
Что я пробовал
Я на самом деле пытаюсь повторить поведение:
https://www.npmjs.com/package/markdown-it-span
плагин для очень полезного анализатора markdown-it, так как в нем, похоже, есть ошибка (которую я не могу понять, как исправить), которая обсуждалась здесь в проблеме:
В коде есть ошибка, которая вызывает создание тега span дважды.
::spanned:: => <span><span>spanned</span></span>
Кроме того, ввод, как
http:
превращается вhttp::
,
Редактировать:
Я только что столкнулся с подобным вопросом здесь, который может иметь ответ...
2 ответа
Это кажется достаточно простым с регулярным выражением /::([^::]+)::/g
:
var s = 'Here is a ::test span:: and another ::span::, colons in this context eg: http://somelink.com are not effected.';
console.log(s.replace(/::([^::]+)::/g, "<span>$1</span>"));
Это достаточно просто. Этот работал для меня: (::)([\w\s]+)(::)
заменить его на <span>$2</span>
,
::text:: => <span>text</span>
::spanned:: => <span>spanned</span>
Here is a ::test span:: and another ::span::, colons in this context eg:
http://somelink.com are not effected.
=>
Here is a <span>test span</span> and another <span>span</span>, colons in this
context eg:
http://somelink.com are not effected.