Как удалить теги и все что в них?

Есть такой текст Текст <br><i>Еще что-то</i> как удалить все теги от сюда и все что внутри эти тегах? Делаю вот так, но удаляет только теги: text.replace(/<[^>]+>/g, '')


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

Автор решения: ΝNL993

Вот правильное и простое решение:

<[a-zA-Z][a-zA-Z\d]*(\s.*?)?>(.*?<\/[a-zA-Z][a-zA-Z\d]*>)?

Объяснение

Почему [a-zA-Z][a-zA-Z\d]*, а не [a-zA-Z\d]+?

Имена тегов в HTML могут начинаться только на латинские буквы, а только потом можно использовать цифры, то-есть, <h1> — ✅, но <42> — ❌. Само выражение можно выразить как-то так: начинается на любую английскую букву и опционально продолжается на любую английскую букву или число.

Для чего нужен (\s.*?)??

Это нужно, чтобы убрать атрибуты в элементах, а также символ / в одиночных тегах:

Привет, <input value="мир!" /> -> Привет,

А это для чего (.*?<\/[a-zA-Z][a-zA-Z\d]*>)??

А это убирает текст и второй тег, если элемент имеет два тега, элементы не обязательно имеют два тега, поэтому используется optional (знак ? после скобки).

→ Ссылка