Regex, сопоставьте все, кроме двойных звездочек - PullRequest
0 голосов
/ 27 января 2019

Я создаю интерфейс текстового редактора, где пользователь может отформатировать текст, и он может видеть изменения в div рядом с ним.

Чтобы выделить кучу текста, я зарезервировал двойные звездочки как следующий ** текст **, как здесь в stackoverflow.

Мой код выглядит следующим образом:

replace(/\*{2}([^\*]*)\*{2}/g, "<strong>$1</strong>")

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

** текст * **,

ине текст *

как можно отрицать двойные символы для соответствия, чтобы не нарушать тег HTML в выходных данных?

1 Ответ

0 голосов
/ 27 января 2019

Вы можете иметь дело с одиночными звездочками, за которыми следует хотя бы еще один символ, просто добавив (?:\*[^*]+)*:

yourstr = yourstr.replace(/\*\*([^*]*(?:\*[^*]+)*)\*\*/g, "<strong>$1</strong>");

Обратите внимание, что экранирование * в классе символов бесполезно, а запись \*{2} длиннее \*\*.

...