diff --git a/stackit/internal/validate/validate.go b/stackit/internal/validate/validate.go index 358fc6d3f..3ebf658da 100644 --- a/stackit/internal/validate/validate.go +++ b/stackit/internal/validate/validate.go @@ -24,7 +24,10 @@ import ( const ( MajorMinorVersionRegex = `^\d+\.\d+?$` - FullVersionRegex = `^\d+\.\d+.\d+?$` + FullVersionRegex = `^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)` + + `(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)` + + `(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?` + + `(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$` ) type Validator struct { diff --git a/stackit/internal/validate/validate_test.go b/stackit/internal/validate/validate_test.go index 60dd83b45..1f0cdced9 100644 --- a/stackit/internal/validate/validate_test.go +++ b/stackit/internal/validate/validate_test.go @@ -551,6 +551,26 @@ func TestVersionNumber(t *testing.T) { "10.20.10", true, }, + { + "ok-patch-version-prerelease", + "1.20.1-alpha", + true, + }, + { + "ok-patch-version-prerelease-with-dot-separator", + "1.20.1-alpha.1", + true, + }, + { + "ok-patch-version-prerelease-without-dot-separator", + "1.20.1-alpha1.2", + true, + }, + { + "version-ends-with-dot", + "1.20.1-alpha.1.", + false, + }, { "Empty", "",