jQuery Заменить звездочки на выделение жирным?

Имеется база данных, в некоторых полях которой жирное выделение задается двойными звездами:

Какой-то текст **жирный текст** и еще **жирнее текст**. 

Нужно, чтобы при выводе на сайте оно превращалось в:

Какой-то текст <b>жирный текст</b> и еще <b>жирнее текст</b>. 

Подозреваю, что задача тривиальная и решенная уже 100500 раз, но мне не приходилось раньше особо активно работать с jQuery, поэтому даже не знаю, как такое нагуглить... Ближайшее, что попалось - это использовать .wrap(), но непонятно, как подсунуть ему именно окруженный звездочками текст. Особенно если таких случаев может быть несколько за строку, но надо избежать косяков порядка: <b> и еще </b> в примере выше.


Ответы (1 шт):

Автор решения: OPTIMUS PRIME

/\*\*(.*?)\*\*/ — называется регулярное выражение, используется для поиска / замены в строках.

У * есть специальное значение, x*: Совпадение символа x от 0 до много раз подряд. Поэтому звездочки нужно экранировать \*, чтобы искать совпадения именно с символом «*».

(.*?): . Что угодно, 0 или много раз подряд *.
? «lazy quantifier», заставляет остановиться при встрече \*\*, иначе сожрет все символы от первой пары ** до последней (игнорируя промежуточные пары).

В строке для замены, $1 — ссылка на то, что совпало внутри скобок.

Флажок g — global, чтобы искал все совпадения в строке, а не останавливался после первого совпадения.

let str = "Какой-то текст **жирный текст** и еще **жирнее текст**.";

document.querySelector("#p").innerHTML = bold_wrap(str);

function bold_wrap(str) {
  return str.replace(/\*\*(.*?)\*\*/g, "<b>$1</b>");
}
<p id="p"></p>

→ Ссылка