diff --git a/baked_in.go b/baked_in.go index 0ae59f0b..c408d547 100644 --- a/baked_in.go +++ b/baked_in.go @@ -534,12 +534,20 @@ func hasMultiByteCharacter(fl FieldLevel) bool { // isPrintableASCII is the validation function for validating if the field's value is a valid printable ASCII character. func isPrintableASCII(fl FieldLevel) bool { - return printableASCIIRegex().MatchString(fl.Field().String()) + field := fl.Field() + if field.Kind() == reflect.String { + return printableASCIIRegex().MatchString(field.String()) + } + return false } // isASCII is the validation function for validating if the field's value is a valid ASCII character. func isASCII(fl FieldLevel) bool { - return aSCIIRegex().MatchString(fl.Field().String()) + field := fl.Field() + if field.Kind() == reflect.String { + return aSCIIRegex().MatchString(field.String()) + } + return false } // isUUID5 is the validation function for validating if the field's value is a valid v5 UUID. diff --git a/validator_test.go b/validator_test.go index 7a528ec8..d4160bfd 100644 --- a/validator_test.go +++ b/validator_test.go @@ -3904,7 +3904,7 @@ func TestMultibyteValidation(t *testing.T) { func TestPrintableASCIIValidation(t *testing.T) { tests := []struct { - param string + param interface{} expected bool }{ {"", true}, @@ -3918,6 +3918,8 @@ func TestPrintableASCIIValidation(t *testing.T) { {"1234abcDEF", true}, {"newline\n", false}, {"\x19test\x7F", false}, + {[]int{3000}, false}, + {1, false}, } validate := New() @@ -3944,7 +3946,7 @@ func TestPrintableASCIIValidation(t *testing.T) { func TestASCIIValidation(t *testing.T) { tests := []struct { - param string + param interface{} expected bool }{ {"", true}, @@ -3957,6 +3959,8 @@ func TestASCIIValidation(t *testing.T) { {"test@example.com", true}, {"1234abcDEF", true}, {"", true}, + {[]int{3000}, false}, + {1, false}, } validate := New()