1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
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, ' ', '\'', '-')
}
|