RegEx zum Filtern von leeren Tags

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

Im Zusammenhang mit dynamischen Templates bin ich auf folgendes Problem gestossen: Im Template befindet sich ein ul-Tag, darin wiederum steht ein Platzhalter, der durch eine Liste ersetzt wird in der Ausgabe.

1<ul>{{<!--ersetzung-->}}</ul>

Nun, semantisch funktioniert das, so lange wir auch eine Liste mit li-Tags erstellen. Sprich so lange, wie wir auch Inhalt produzieren. Im Beispiel sieht das so aus:

1gut:
2<ul>
3<li>Gemeindeammann</li>
4<li>Schulpräsident</li>
5</ul>
6
7schlecht:
8<ul></ul>

So, jetzt sieht man das Problem: ein leerer ul-Tag. Klar, den könnte man nun mit einer Regular Expression filtern, wie sie bereits in einem früheren Eintrag beschrieben worden ist. Das Problem ist nur, dass der Bereich zwischen dem Start- und Endtag nicht zwingend leer ist, also Leerzeichen enthalten kann. Und so muss man sich einer weiteren Ersetzung behelfen:

1ReReplaceNoCase(string, "<ul([^>]*)>([[:space:]]*)</ul>", "", "ALL")

Mit dieser RegEx werden alle ul-Tags gefiltert, die keine li-Tags enthalten.