Regex für HTML-Tags finden

Mit /<\/?[A-Za-z][A-Za-z0-9-]*(?:\s[^<>]*)?\/?>/g findest du alle Treffer in einem Text. Jedes Beispiel unten wurde gegen das Muster getestet. Du kannst es mit vorgeladenen Beispielen direkt im Regex Tester öffnen.

Aktualisiert am

/<\/?[A-Za-z][A-Za-z0-9-]*(?:\s[^<>]*)?\/?>/g
Im Regex Tester öffnen

Beispieltext

<p class="intro">Hello <strong>world</strong><br/></p><my-card id="x"></my-card>

7 Treffer

<p class="intro"> <strong> </strong> <br/> </p> <my-card id="x"> </my-card>

So funktioniert das Muster

TeilBedeutung
<Öffnende spitze Klammer
\/?Optionaler Schrägstrich für schließende Tags
[A-Za-z][A-Za-z0-9-]*Tag-Name, inklusive eigener Elemente wie my-card
(?:\s[^<>]*)?Optionale Attribute
\/?>Optionaler Schrägstrich für selbstschließende Tags und die schließende Klammer

Codebeispiele

JavaScript

const matches = text.match(/<\/?[A-Za-z][A-Za-z0-9-]*(?:\s[^<>]*)?\/?>/g) ?? [];

Python

import re

matches = re.findall(r'</?[A-Za-z][A-Za-z0-9-]*(?:\s[^<>]*)?/?>', text)

PHP

preg_match_all('/<\/?[A-Za-z][A-Za-z0-9-]*(?:\s[^<>]*)?\/?>/', $text, $m);
$matches = $m[0];

Hinweise und Einschränkungen

Gut für schnelle Suchen und Hervorhebungen. Regex kann HTML aber nicht zuverlässig parsen (Kommentare, Scripts, Attribute mit >). Für alles Wichtige nutze DOMParser oder einen echten Parser. Um Tags zu entfernen und den Text zu behalten, siehe HTML-Tags mit Regex entfernen.

Häufige Fragen

Wie lautet der Regex, um HTML-Tags zu finden?
/<\/?[A-Za-z][A-Za-z0-9-]*(?:\s[^<>]*)?\/?>/g — findet jeden Treffer in einem Text. Was jeder Teil macht, steht in der Tabelle oben.
Funktioniert er auch in Python und PHP?
Ja — die Codebeispiele oben nutzen dasselbe Muster mit re in Python und preg-Funktionen in PHP.
Wie teste ich diesen Regex?
Klick auf „Im Regex Tester öffnen“ — Muster, Flags und Beispieltext laden automatisch, und Treffer werden beim Bearbeiten hervorgehoben.