package nebula import ( "errors" "regexp" ) var hostNameRegexp = regexp.MustCompile(`^[a-z][a-z0-9\-]*$`) // HostName is the name of a host in a network. HostNames may only have // lowercase letters, numbers, and hyphens, and must start with a letter. type HostName string // UnmarshalText parses and validates a HostName from a text string. func (h *HostName) UnmarshalText(b []byte) error { if !hostNameRegexp.Match(b) { return errors.New("a host's name must start with a letter and only contain letters, numbers, and dashes") } *h = HostName(b) return nil }