package validate import ( "strings" "unicode" ) func Name(name string) bool { if len(Fold(name)) == 0 || len(name) > 64 { return false } for _, r := range name { if unicode.IsControl(r) { return false } } return true } func Fold(s string) string { var sb strings.Builder var wasSpace bool for _, r := range s { for { f := unicode.SimpleFold(r) if f <= r { r = f break } r = f } r = unicode.ToLower(r) if !unicode.IsPrint(r) { continue } if r == ' ' { if wasSpace { continue } wasSpace = true } else { wasSpace = false } sb.WriteRune(r) } return strings.TrimSpace(sb.String()) }