Как заменить определенные символы переноса текста тегами 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::,

Редактировать:

Я только что столкнулся с подобным вопросом здесь, который может иметь ответ...

Заменить весь контент между символами JavaScript

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.
Другие вопросы по тегам