SemVer-Parser
Zerlegen Sie eine Version wie 1.2.3-alpha.1+build.7 in Major 1, Minor 2, Patch 3, Prerelease alpha.1 und Build build.7, streng geprüft nach SemVer 2.0.0. Ein fehlerhaftes Tag wird mit der verletzten Regel abgelehnt. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- 1.2.3-alpha.1+build.7
- Version
- 1.2.3-alpha.1+build.7
- Major
- 1
- Minor
- 2
- Patch
- 3
Eine Version besteht nicht nur aus drei Zahlen: optionale, durch Bindestriche verbundene Prerelease-Kennungen und mit Plus versehene Build-Metadaten ändern, wie eine Veröffentlichung bezeichnet und verglichen wird. Dieser SemVer-Versionsparser nimmt eine einzelne Zeichenkette entgegen, prüft sie streng gegen die offizielle SemVer-2.0.0-Spezifikation und liefert die numerischen Bestandteile major, minor und patch sowie etwaige Prerelease- und Build-Kennungen.
Was SemVer 2.0.0 tatsächlich zulässt
Semantic Versioning 2.0.0 definiert eine Version als MAJOR.MINOR.PATCH, drei nichtnegative ganze Zahlen, verbunden durch Punkte, mit optionalen Prerelease-Kennungen nach einem Bindestrich und optionalen Build-Metadaten nach einem Plus. Jedes von major, minor und patch ist eine numerische Kennung: entweder eine einzelne Null oder eine Ziffer von eins bis neun, gefolgt von weiteren Ziffern, sodass 1.0.0 gültig ist und 01.0.0 nicht. Eine Prerelease-Version ist der Kern, gefolgt von einem Bindestrich und einer oder mehreren punktgetrennten Kennungen wie alpha, rc.1 oder 0.3.4.
Eine Prerelease-Kennung ist entweder eine numerische Kennung mit derselben Regel ohne führende Nullen oder eine alphanumerische Kennung, die mindestens einen Buchstaben oder Bindestrich enthält und sonst nur ASCII-Buchstaben, Ziffern und Bindestriche. Build-Metadaten folgen einem Pluszeichen und nutzen dasselbe Kennungsalphabet, außer dass rein numerische Build-Kennungen führende Nullen behalten dürfen, sodass 1.0.0+001 zulässig ist. Leere Kennungen, aufeinanderfolgende Punkte, ein abschließender Bindestrich oder ein Plus, ein führendes v, zweiteilige Versionen wie 1.2 und Nicht-ASCII-Buchstaben sind unzulässig.
Dieser Parser setzt jene Grammatik als Links-nach-rechts-Scanner um, nicht als nachsichtigen regulären Ausdruck, sodass ein Fehler die gebrochene Regel nennt statt ein halb zerlegtes Objekt zurückzugeben. Die Vergleichsreihenfolge liegt außerhalb des Umfangs: die Fähigkeit zerlegt und prüft, sie ordnet nicht zwei Versionen gegeneinander.
Wo ein SemVer-Parser seinen Nutzen verdient
Paketregister, Veröffentlichungsroboter und Changelog-Erzeuger brauchen eine einzige Stelle, die sagt, ob ein Anhänger eine zulässige SemVer-Version ist und welches ihre fünf Teile sind. Ein Dauerintegrationsauftrag, der die Veröffentlichung verweigert, wenn der git-Anhänger v1.2.3 statt 1.2.3 ist oder jemand nur 1.2 tippte, verhindert eine kaputte Freigabe, bevor sie ein Register erreicht. Abhängigkeitsscanner, die Lockdateien einlesen, wollen strukturierte Felder major, minor, patch und prerelease, ohne eine sprachspezifische SemVer-Laufzeit in einen Rand-Worker zu ziehen.
Wer Versionierung lehrt, will eine eigene Seite, die führende Nullen und Build-Metadaten erklärt, statt das Thema unter einem allgemeinen Zeichenspalter zu begraben. Gescheiterte Prüfung wird nicht berechnet. Halten Sie Zeichenketten unter der dokumentierten Längengrenze, heften Sie die strukturierten Felder in Prüfungen fest, und Sie erhalten wiederholbare Bestandteile für Freigabewerkzeuge, Lernzusätze und Rand-Worker, ohne eine eigene sprachspezifische SemVer-Bibliothek aufzustellen.
Anwendungsfälle
Git-Anhänger vor einer Freigabe prüfen
Lehnen Sie einen Veröffentlichungsauftrag ab, wenn der Anhänger v1.2.3, 1.2 oder 01.0.0 ist statt einer zulässigen SemVer-2.0.0-Version.
Versionen aus Lockdatei oder SBOM zerlegen
Wandeln Sie jede Abhängigkeitsversion in die Felder major, minor, patch, prerelease und build für Scanner und Übersichten.
Häufige Fragen
Was ist eine gültige SemVer-2.0.0-Versionskette?
MAJOR.MINOR.PATCH mit optionalem -prerelease und +build, nur ASCII-Buchstaben, Ziffern und Bindestriche. Beispiel: 1.2.3-alpha.1+build.7. Zweiteilige Versionen und ein führendes v sind ungültig.
Nimmt der Parser ein führendes v an, etwa v1.2.3?
Nein. SemVer 2.0.0 erlaubt kein v-Präfix. Senden Sie 1.2.3.
Warum wird 01.0.0 abgelehnt?
Numerische Kennungen dürfen keine führenden Nullen haben. 0 ist als ganze Kennung erlaubt (0.1.0), 01 jedoch nicht. Dieselbe Regel gilt für numerische Prerelease-Kennungen wie 01 in 1.0.0-01.
Wie kommen prerelease und build zurück, wenn sie fehlen?
Diese Schlüssel werden weggelassen, niemals auf null gesetzt.
Dürfen Build-Metadaten führende Nullen haben?
Ja. Nach dem Pluszeichen darf eine rein numerische Build-Kennung führende Nullen behalten, daher ist 1.0.0+001 gültig. Major, Minor, Patch und numerische Prerelease-Kennungen dürfen das nicht.
Sagt mir das Werkzeug, welche von zwei Versionen neuer ist?
Nein. Es zerlegt und prüft jeweils eine Version und ordnet Versionen nicht gegeneinander. Wenn Sie sortieren oder vergleichen müssen, nutzen Sie die gelieferten Bestandteile in Ihren eigenen Werkzeugen.
Verwandte Tools
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/semver-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"1.2.3-alpha.1+build.7"}'const res = await fetch("https://api.kit.forhosting.com/dev/semver-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "1.2.3-alpha.1+build.7"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/semver-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "1.2.3-alpha.1+build.7"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/semver-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"1.2.3-alpha.1+build.7"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"1.2.3-alpha.1+build.7"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/semver-parse", 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": "1.2.3-alpha.1+build.7"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.semver_parse",
"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.
Limits
max_chars | 256 |
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. |
Technische Hinweise
Semantic Versioning (SemVer 2.0.0) ist die Versionsgrammatik von npm-Paketen, Rust-Crates, Go-Modulen und den meisten öffentlichen API. Führende v-Präfixe, fehlende Patch-Zahlen, führende Nullen in numerischen Kennungen, leere Kennungen und Nicht-ASCII-Zeichen werden mit invalid_input abgelehnt statt stillschweigend umgeschrieben.
Eingabevertrag, Antwortform und Fehlerverhalten
Umgebender Leerraum wird entfernt; die verbleibende Zeichenkette muss eine vollständige SemVer-2.0.0-Version sein. Senden Sie kein führendes v, keinen Bereichsoperator und keine zweiteilige Kurzform. Senden Sie einen JSON-Körper mit dem Pflicht-Zeichenkettenfeld text (Aliase version, semver, value). Bei Erfolg wiederholt der Körper version als die gekürzte Eingabe, major, minor und patch als sichere ganze Zahlen, core als die Teilkette MAJOR.MINOR.PATCH und is_prerelease als Wahrheitswert. Ist ein Prerelease-Abschnitt vorhanden, ist prerelease die Kennungskette ohne den führenden Bindestrich und prerelease_identifiers das gespaltene Feld; beide Schlüssel entfallen, wenn es keine Prerelease gibt. Sind Build-Metadaten vorhanden, erscheinen build und build_identifiers ebenso und entfallen sonst, sodass Auftraggeber niemals null sehen. Beispiel: 1.2.3-alpha.1+build.7 ergibt major 1, minor 2, patch 3, prerelease alpha.1, build build.7 und is_prerelease true. Fehlendes text, eine leere Zeichenkette, ein Text länger als zweihundertsechsundfünfzig Zeichen, eine Zahl statt einer Zeichenkette, führende Nullen bei major, minor, patch oder einer numerischen Prerelease-Kennung, unzulässige Zeichen, Restzeichen nach der Version und ein führendes v scheitern mit invalid_input und einer englischen Meldung, die das Feld oder die gebrochene Regel nennt. Diese Fehler werden nicht berechnet. Der API-Preis bei Erfolg ist die veröffentlichte Basis von $0.002 je Element.
Wo ein SemVer-Parser seinen Nutzen verdient
Weil die Umsetzung reines parse der Stufe A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Grundpreis $0.002 ohne Modelltoken und ohne ausgehendes Netz.
Integrationsbeispiele
Die SemVer-Grammatik unterrichten
Zeigen Sie Lernenden, welche Zeichenketten die Spezifikation annimmt und welche sie ablehnt, mit denselben Regeln, die die API durchsetzt.
Technische Fragen
Was kostet der SemVer-Versionsparser?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 je erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.