RexDude hat geschrieben:Also prinzipiell kann man folgendes sagen: alle Paragraphen die keinen normalen Text enthalten, sonder leer sind, enthalten oder min. 1 BR enthalten sollen herausgefiltert werden. Dafür müsste eigentlich ein RexEx ausreichen, oder?
Wie gesagt, ich würde Massen-<br>s mit einzelnen austauschen. Schließlich kommt es ziemlich oft vor, dass man einzelne Zeilenumbrüche braucht (Gedichte, zweizeilige Überschriften, Fließtexte, etc.).
Ich denke das hier, wird dir gefallen:
Code: Alles auswählen
// match all tags except lonely <br />s outside of any elements ;-(
data = data.match(/(<(?!br)(\w)[^>]*>(.*?<\/\2>)?)/igm).join("\n");
// replace leading <br>s
data = data.replace(/(<(?!br)(\w)[^>]*>)(\s*<br\s*\/?>\s*)+/igm, '$1');
// replace trailing <br>s
data = data.replace(/(\s*<br\s*\/?>\s*)+(<\/(?!br)(\w)>)/igm, '$2');
// replace empty paragraphs
data = data.replace(/(<p>(\s| |<br\s*\/?>)*<\/p>)/igm, '');
// replace multiple <br>s with a single one
data = data.replace(/(<br\s*\/?>\s*)+/igm, '<br />');
http://jsfiddle.net/tDdRc/5/
Edit: Hab grad gemerkt, dass das Forum meinen Code verändert hat. Deshalb haben meine ersten Regexe, nicht das gewünschte Ergebnis gebracht. Hol dir den Code am besten von jsFiddle.