как заменить определенные символы переноса текста на теги span? - PullRequest
0 голосов
/ 13 октября 2018

Желаемое поведение

Заменить ::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 parser , поскольку, похоже, есть ошибка (которую я не могу понять, как исправить), которая была обсуждена в проблеме здесь :

В коде есть ошибка, приводящая к созданию тега span дважды.

::spanned:: => <span><span>spanned</span></span>

Кроме того, ввод, например http:, преобразуется в http::.

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

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

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

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Это достаточно просто.Этот работал для меня: (::)([\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.
0 голосов
/ 13 октября 2018

Это кажется достаточно простым с регулярным выражением /::([^::]+)::/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>"));
...