diff --git a/pkg/util/validation.go b/pkg/util/validation.go index 06e1ca0a65c..9ab0dcfe924 100644 --- a/pkg/util/validation.go +++ b/pkg/util/validation.go @@ -20,7 +20,11 @@ import ( "regexp" ) -const LabelValueFmt string = "[-A-Za-z0-9_.]*" +const kubeChar string = "[A-Za-z0-9]" +const extendedKubeChar string = "[-A-Za-z0-9_.]" +const qualifiedToken string = "(" + kubeChar + extendedKubeChar + "*)?" + kubeChar + +const LabelValueFmt string = "((" + kubeChar + extendedKubeChar + "*)?" + kubeChar + ")?" var labelValueRegexp = regexp.MustCompile("^" + LabelValueFmt + "$") @@ -35,10 +39,7 @@ func IsValidAnnotationValue(value string) bool { return true } -const kubeToken string = "[A-Za-z0-9]" -const extendedKubeToken string = "[-A-Za-z0-9_.]" -const qualifiedNamePiece string = "(" + kubeToken + extendedKubeToken + "*)?" + kubeToken -const QualifiedNameFmt string = "(" + qualifiedNamePiece + "/)?" + qualifiedNamePiece +const QualifiedNameFmt string = "(" + qualifiedToken + "/)?" + qualifiedToken var qualifiedNameRegexp = regexp.MustCompile("^" + QualifiedNameFmt + "$") diff --git a/pkg/util/validation_test.go b/pkg/util/validation_test.go index 828c3cafd30..61c7061a8d9 100644 --- a/pkg/util/validation_test.go +++ b/pkg/util/validation_test.go @@ -196,12 +196,9 @@ func TestIsValidLabelValue(t *testing.T) { "now-with-dashes", "1-starts-with-num", "end-with-num-1", - "-starts-with-dash", - "ends-with-dash-", - ".starts.with.dot", - "ends.with.dot.", "1234", // only num strings.Repeat("a", 63), // to the limit + "", // empty value } for i := range successCases { if !IsValidLabelValue(successCases[i]) { @@ -213,6 +210,10 @@ func TestIsValidLabelValue(t *testing.T) { "nospecialchars%^=@", "Tama-nui-te-rā.is.Māori.sun", "\\backslashes\\are\\bad", + "-starts-with-dash", + "ends-with-dash-", + ".starts.with.dot", + "ends.with.dot.", strings.Repeat("a", 64), // over the limit } for i := range errorCases {