Вот как я заменяю символы до и после слова:
el = el.replace(/"\b/g, '“')
el = el.replace(/\b"/g, '”')
Что, если я захочу повернуть это:
```
This is a quote
```
В это?
<quote>
This is a quote
</quote>
ваш текст может содержать ``, верно?
Если вы уверены, что их не случится непарных, используйте простой счетчик var counter = 0; str.replace(/```/g, function() { return counter++ % 2 == 0 ? '<quote>' : '</quote>'; }).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сопоставить
^```
, лениво - повторяйте любой символ, пока не дойдете до другого
^```
. ^ в начале гарантирует, что три обратных кавычки находятся в начале строки, а [\s\S] ниже - это способ сопоставления любой персонаж, включая разрывы строк, что . не делает по умолчанию:
function doReplace(str) {
console.info(str);
console.info(
str.replace(/^```([\s\S]*?)^```/gm, '<quote>$1</quote>')
);
}
doReplace("```\nThis is a quote\n```");
doReplace("```\nThis is a quote\nand there are some backticks in the text\nbut not ``` at the beginning of a line\n```");Это может быть еще один способ заменить начальную и конечную тройную обратную галочку "` `" на <quote> и </quote> соответственно.
const string = "```\nThis is a quote\n```";
const replacer = {
'```\n': '<quote>\n',
'\n```': '\n</quote>'
}
const str = string.replace(/```\n|\n```/gm, function(matched) {
return replacer[matched];
})
console.info(str);Чередование будет соответствовать любому из них, это не гарантирует, что оно находится между ними. Так что, если строка будет const string = "```\nThis is a quote\n";, ее также следует заменить.
Нет гарантии, что строка после закрывающей последовательности не содержит текста, верно?