Wie überprüft UUID v4 in Gehen?
Habe ich das folgende Stück code:
func GetUUIDValidator(text string) bool {
r, _ := regexp.Compile("/[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}/")
return r.Match([]byte(text))
}
Aber wenn ich den pass fbd3036f-0f1c-4e98-b71c-d4cd61213f90
als Wert, ich habe false
, während in der Tat es ist eine UUID v4.
Was mache ich falsch?
- BTW, es ist
regex.MustCompile
für die Nutzung, wie in Ihrem code. Auch, Gehen Stil regexes nicht verwenden, / / Trennzeichen. Lesen Sie die Dokumentation, um zu verstehen, wie Gehen regex arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, mit...
Live-Beispiel: https://play.golang.org/p/a4Z-Jn4EvG
Hinweis: wie schon andere gesagt haben, ist die Validierung UUIDs mit regulären Ausdrücken kann langsam sein. Betrachten Sie andere Optionen, wenn Sie eine bessere Leistung brauchen.
[a-f]
und manchmal[aAbB]
, so dass die Großbuchstaben nur an wenigen Orten.Regex ist teuer. Der folgende Ansatz ist ~18x mal schneller als die regex-version.
Etwas wie https://godoc.org/github.com/google/uuid#Parse statt.
Können Sie nutzen satori/gehen.uuid-Paket, dies zu erreichen:
Dieses Paket ist weit verbreitet für die UUID-Operationen: https://github.com/satori/go.uuid