Javascript заменяет согласованную группу

Я пытаюсь создать текстовый форматировщик, который добавит теги p и br к тексту на основе разрывов строк. В настоящее время у меня есть это:

s.replace(/\n\n/g, "\n</p><p>\n");

Что прекрасно работает для создания концов абзаца и начала. Однако попытки найти экземпляры
работают не так хорошо. Попытка выполнить соответствующую замену группы не работает, поскольку она игнорирует скобки и заменяет все регулярное выражение:

s.replace(/\w(\n)\w/g, "<br />\n");

Я попытался удалить параметр g (все еще заменял весь матч, но только на первое совпадение). Есть ли другой способ сделать это?

Спасибо!

Ответ 1

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

s.replace(/(\w)\n(\w)/g, "$1<br />\n$2");

См. этот раздел в документах MDN для получения дополнительной информации о ссылках на части входной строки в вашей заменяющей строке.

Ответ 2

Поймать окружающие символы:

s.replace(/(\w)(\n\w)/g, "$1<br />$2");