Вы можете использовать простое регулярное выражение:
const regex = /\*(.*?)\*/g;
const test = "*bold*, not bold, *bold again*";
const result = test.replace(regex , '<strong>$1</strong>')
console.log(result)
- Вы хотите от
*
до следующего *
и сохранять все между: *(.*?)*
(без ?
это будетпереходите от первого к последнему, он называется (не) жадным). - Это не работает, потому что
*
имеет использование, поэтому вы должны выйти -> \*
. /g
означает «глобальный», например, заменить все вхождения (в отличие только от первого). $1
содержит наше первое (и только в этом случае) значение.
Версия с подчеркиванием работает так же, и не нуждается в экранировании, как *
.