package windows import ( "regexp" ) var SpecialCharacters = []rune{'!', '@', '#', '$', '%', '^', '&', '*'} // Inclusive minimum and maximum func StringValidLength(min int, max int, value string) bool { return len(value) >= min && len(value) <= max } func StringValidCharacters(value string, letters bool, numbers bool, special ...rune) bool { expr := "^[" if letters { expr += "A-z" } if numbers { expr += "0-9" } for _, v := range special { expr += string(v) } expr += "]+$" return regexp.MustCompile(expr).MatchString(value) } func StringValidRuneAmount(value string, runeStart rune, runeEnd rune, minAmount int) bool { var sum int for _, v := range value { if v >= runeStart && v <= runeEnd { sum++ } } return sum >= minAmount } func StringValidUsername(value string) bool { return StringValidLength(2, 40, value) && StringValidCharacters(value, true, true, '.', '*', '_', '-') && (StringValidRuneAmount(value, 'A', 'Z', 1) || StringValidRuneAmount(value, 'a', 'z', 1)) } func StringValidPassword(value string) bool { return StringValidLength(5, 40, value) && StringValidCharacters(value, true, true, SpecialCharacters...) && StringValidRuneAmount(value, '0', '9', 1) } func StringValidName(value string) bool { return StringValidLength(2, 60, value) && StringValidCharacters(value, true, false, ' ', '\'', '-') }