Удалить все теги, заменить

Есть строчка

<div id="texts">
<p id=ss>Текст</p>
<p>Текст.
Текст <span class=sv>fds</span>Текст.
Текст ТекстТекст Текст.<a data=link>link</a></p>
</div>

Как удалить все теги, но оставить их содержимое, а заместо тега

</p>

Вставить

/n

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

Автор решения: eccs0103

Регулярное выражение <!?/?\w+(\s[\w-]+(=['"]?.*?['"]?)?)*/?> выберет все теги - будь то с аттрибутом или без. Осталось только поставить его в replace() и заменить На то что нужно.


Проверил у себя в VS Code:

Выделяется все кроме внутреннего текста.

→ Ссылка
Автор решения: EzioMercer

Алгоритм:

  1. Заменяем все </p> на \n</p>
  2. Берём всё текстовое содержимое

const texts = document.querySelector('#texts');

texts.innerHTML = texts.innerHTML.replaceAll('</p>', '\n</p>');

console.log('innerHTML:\n', texts.innerHTML);
console.log('textContent:\n', texts.textContent);
<div id="texts">
<p id=ss>Текст</p>
<p>Текст.
Текст <span class=sv>fds</span>Текст.
Текст ТекстТекст Текст.<a data=link>link</a></p>
</div>

→ Ссылка