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 r < unicode.SimpleFold(r) { r = unicode.SimpleFold(r) } if !unicode.IsPrint(r) { continue } if r == ' ' { if wasSpace { continue } wasSpace = true } else { wasSpace = false } sb.WriteRune(r) } return strings.TrimSpace(sb.String()) }