github.com/EngineerKamesh/gofullstack@v0.0.0-20180609171605-d41341d7d4ee/volume1/section5/validationkit/validationkit.go (about) 1 package validationkit 2 3 import ( 4 "log" 5 "math/rand" 6 "regexp" 7 "time" 8 ) 9 10 const UsernameRegex string = `^@?(\w){1,15}$` 11 12 func CheckUsernameSyntax(username string) bool { 13 14 validationResult := false 15 r, err := regexp.Compile(UsernameRegex) 16 if err != nil { 17 log.Fatal(err) 18 } 19 validationResult = r.MatchString(username) 20 return validationResult 21 } 22 23 func GenerateRandomUsername() string { 24 25 rand.Seed(time.Now().UnixNano()) 26 27 usernameLength := rand.Intn(15) + 1 28 29 var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_") 30 b := make([]rune, usernameLength) 31 for i := range b { 32 b[i] = letterRunes[rand.Intn(len(letterRunes))] 33 } 34 randomUsername := string(b) 35 36 zeroOrOne := rand.Intn(2) 37 if zeroOrOne == 1 { 38 randomUsername = "@" + randomUsername 39 } 40 return randomUsername 41 }