Regex für Semantic Version (semver)

Nutze /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/, um zu prüfen, ob ein ganzer String eine gültige Semantic Version (semver) ist. Jedes Beispiel unten wurde gegen das Muster getestet, und du kannst es mit den vorgeladenen Beispielen im Regex-Tester öffnen.

Aktualisiert am

/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/
Im Regex-Tester öffnen
EingabeErgebnisGruppen
1.0.0✓ Treffer1 0 0
2.10.3-beta.1✓ Treffer2 10 3 beta.1
1.0.0+build.5✓ Treffer1 0 0 build.5
0.1.0-rc.1+sha.5114f85✓ Treffer0 1 0 rc.1 sha.5114f85
1.0✗ Kein Treffer
01.0.0✗ Kein Treffer
v1.0.0✗ Kein Treffer
1.0.0-✗ Kein Treffer

So funktioniert das Muster

TeilBedeutung
(0|[1-9]\d*)Major, Minor und Patch (Gruppen 1–3): Zahlen ohne führende Nullen
\.Punkte dazwischen
(?:-([0-9A-Za-z.-]+))?Optionales Pre-Release nach einem Bindestrich (Gruppe 4): beta.1, rc.2
(?:\+([0-9A-Za-z.-]+))?Optionale Build-Metadaten nach einem Pluszeichen (Gruppe 5)

Code-Beispiele

JavaScript

const re = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?', value))

PHP

preg_match('/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/', $value) === 1;

Hinweise und Einschränkungen

Eine praktische Version der semver-2.0-Regeln. Entferne zuerst ein führendes v, falls deine Tags eins verwenden. Vergleiche Versionen numerisch, Gruppe für Gruppe, nicht als Strings.

Häufige Fragen

Wie lautet der Regex für Semantic Version (semver)?
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/ — er prüft den gesamten String. Was jeder Teil macht, steht in der Tabelle oben.
Welche Beispiele passen?
Von den getesteten Beispielen passen diese: 1.0.0, 2.10.3-beta.1, 1.0.0+build.5, 0.1.0-rc.1+sha.5114f85. Die anderen passen nicht.
Wie teste ich diesen Regex?
Klicke auf „Im Regex-Tester öffnen“. Muster, Flags und Beispieltext werden automatisch geladen, und Treffer werden beim Bearbeiten markiert.