Например, саму очистку от тегов можно сделать так:
function strip_tags(text, tags = []) {
return text.replace(/(<\/?)([a-z]+|h[1-6])\b[^<>]*>/gi,
(match, p1, p2) => tags.includes(p2.toLowerCase()) ? p1 + p2 + '>' : '');
}
Вызов strip_tags(data, ['span', 'a']) вернёт текст data, из которого удалены все теги, кроме <span> и <a>, а у оставшихся тегов удалены все атрибуты.