Вроде потихоньку въезжаю в регулярные выражения, продолжу утром :0
str = "<p><h1>Pestilence</h1>War<h2>Famine</h2><pre>Death</pre></p>"
block = /\<(h1|h2|h3|h4|h5|h6|pre|div|ul|)\>([\s\S]*)\<\/\1\>/gim;
str = str.replace(block, '</p>$&<p>');
alert(str);