Ausgeglichene Klammern prüfen
Der Validator für ausgeglichene Klammern prüft runde, eckige und geschweifte Klammern in Code oder Text mit einem einzigen deterministischen Durchlauf.
Im Browser ausführen – kostenlos
Er stellt fest, ob jede öffnende Klammer den richtigen Abschluss besitzt und die Verschachtelungsreihenfolge stimmt. Bei ungültiger Eingabe nennt das Ergebnis die erste erkennbare Abweichung, ihre nullbasierte Position sowie das gefundene und das erwartete Zeichen. Damit eignet sich das Werkzeug für manuelle Kontrollen, Editor-Integrationen, Build-Skripte, Lernaufgaben und schlanke Validierungsabläufe, ohne einen sprachspezifischen Parser vorauszusetzen.
Verstehen Sie den Prüfumfang
Dieser Validator konzentriert sich auf die drei in Quellcode und strukturiertem Text üblichen Klammerfamilien: runde, eckige und geschweifte Klammern. Eine Eingabe ist gültig, wenn jedes öffnende Zeichen durch ein Zeichen derselben Familie geschlossen wird und die Abschlüsse in umgekehrter Reihenfolge der Öffnungen erscheinen. So ist <code>({[]})</code> ausgeglichen, weil jedes innere Paar vor seinem Behälter endet; <code>([)]</code> ist dagegen ungültig, weil die runde Klammer geschlossen wird, während die eckige noch offen ist. Andere Zeichen als diese sechs Klammerzeichen beeinflussen das Ergebnis nicht. Sie können deshalb eine Funktion, einen Konfigurationsausschnitt, einen mathematischen Ausdruck, Fließtext oder ein mehrzeiliges Beispiel einfügen. Die Prüfung arbeitet lexikalisch und nicht sprachbewusst: Auch Klammern in Zeichenketten oder Kommentaren werden gezählt. Diese vorhersehbare Regel funktioniert sprachübergreifend, ersetzt jedoch keinen JavaScript-, Python- oder JSON-Parser und keinen Compiler, wenn Klammern in Zeichenketten und Kommentaren unberücksichtigt bleiben sollen.
Deuten Sie Positionen und Diagnoseangaben
Passt eine schließende Klammer nicht zur zuletzt geöffneten, endet die Prüfung sofort und meldet dieses Zeichen als erste erkannte Abweichung. Die Antwort enthält <code>balanced: false</code>, eine nullbasierte <code>position</code>, das Zeichen <code>found</code> und den Wert <code>expected</code>. Bei einer fehlerhaften Verschachtelung wie <code>{[}</code> wird die schließende geschweifte Klammer an Position zwei gemeldet, weil dort eine schließende eckige Klammer erforderlich war. Außerdem enthält die Antwort die Position der öffnenden Klammer, aus der diese Erwartung folgt. Erscheint eine schließende Klammer ohne verfügbare Öffnung, erklärt der erwartete Wert, dass eine öffnende Klammer benötigt wurde. Eine am Ende übrige Öffnung lässt sich erst nach dem vollständigen Durchlauf erkennen; dann verweist das Ergebnis auf die zuletzt geöffnete ungeschlossene Klammer und nennt ihren erforderlichen Abschluss. Es gilt die JavaScript-Zeichenkettenindizierung, daher sind Positionen UTF-16-Codeeinheiten-Offsets. In gewöhnlichem ASCII-Code entsprechen sie den Zeichenpositionen der meisten Editoren.
Nutzen Sie die Prüfung in Automatisierung und Reviews
Für eine interaktive Kontrolle fügen Sie Code oder Text in den Browser-Runner ein und lesen die strukturierte Antwort. Die API verwendet denselben deterministischen Solver, sodass Automatisierungen genau dieselbe Entscheidung und dieselben Diagnosefelder wie ein manueller Lauf erhalten. Ein Pre-Commit-Hook kann erzeugte Ausschnitte ablehnen, wenn <code>balanced</code> false ist; eine Dokumentationspipeline kann fehlerhafte Beispiele vor der Veröffentlichung abfangen, und eine Lernanwendung kann mit dem erwarteten Zeichen und der genauen Position gezielte Hinweise geben. Eine API-Anfrage kostet $0.002; eine variable Gebühr pro Zeichen ist nicht vorgesehen. Die Prüfung läuft in linearer Zeit, da jedes Zeichen einmal besucht wird und ein Stack nur noch offene Klammern speichert. Das Werkzeug schreibt den übermittelten Inhalt weder um noch repariert, formatiert, führt oder wertet es ihn aus. Verwenden Sie die Antwort als präzises Signal zur Klammerstruktur und kombinieren Sie sie mit einem Parser oder Linter, wenn zusätzlich Grammatik, Zeichenketten, Kommentare oder weitere Syntaxfehler geprüft werden müssen.
Anwendungsfälle
Prüfen Sie generierten Code vor dem Speichern
Lehnen Sie einen erzeugten Ausschnitt ab, wenn die Verschachtelung unvollständig ist oder eine Klammer zum falschen Paar gehört.
Geben Sie Lernenden gezielte Hinweise
Zeigen Sie die nullbasierte Stelle und das erwartete Abschlusszeichen, statt nur einen ungültigen Ausdruck zu melden.
Validieren Sie Dokumentationsbeispiele
Prüfen Sie Codebeispiele in der Veröffentlichungspipeline und markieren Sie fehlerhafte Strukturen, bevor Leser sie sehen.
Häufige Fragen
Welche Zeichen werden geprüft?
Geprüft werden runde (), eckige [] und geschweifte Klammern {}. Alle anderen Zeichen werden ignoriert.
Beginnen die Positionen bei null?
Ja. Position null ist die erste UTF-16-Codeeinheit der Zeichenkette gemäß der JavaScript-Indizierung.
Werden Klammern in Zeichenketten oder Kommentaren ignoriert?
Nein. Diese sprachneutrale lexikalische Prüfung zählt jedes Klammerzeichen unabhängig von seinem Vorkommen.
Was geschieht mit einer nie geschlossenen Öffnung?
Nach dem vollständigen Durchlauf nennt das Ergebnis die zuletzt geöffnete ungeschlossene Klammer und das benötigte Abschlusszeichen.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Der Browser-Runner führt dieselbe deterministische Prüfung lokal aus.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/balanced-brackets \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"function demo(items) { return items[0]; }"}'const res = await fetch("https://api.kit.forhosting.com/dev/balanced-brackets", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "function demo(items) { return items[0]; }"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/balanced-brackets",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "function demo(items) { return items[0]; }"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/balanced-brackets", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"function demo(items) { return items[0]; }"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"function demo(items) { return items[0]; }"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/balanced-brackets", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "function demo(items) { return items[0]; }"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.balanced_brackets",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |