52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
|
|
package validator
|
||
|
|
|
||
|
|
import (
|
||
|
|
"regexp"
|
||
|
|
"strings"
|
||
|
|
"unicode"
|
||
|
|
)
|
||
|
|
|
||
|
|
// ValidateLogin проверяет логин (только буквы, цифры, underscore, от 3 до 32 символов)
|
||
|
|
func ValidateLogin(login string) bool {
|
||
|
|
if len(login) < 3 || len(login) > 32 {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
matched, _ := regexp.MatchString("^[a-zA-Z0-9_]+$", login)
|
||
|
|
return matched
|
||
|
|
}
|
||
|
|
|
||
|
|
// ValidatePassword проверяет пароль (минимум 6 символов)
|
||
|
|
func ValidatePassword(password string) bool {
|
||
|
|
return len(password) >= 6
|
||
|
|
}
|
||
|
|
|
||
|
|
// SanitizeString очищает строку от лишних пробелов
|
||
|
|
func SanitizeString(s string) string {
|
||
|
|
return strings.TrimSpace(s)
|
||
|
|
}
|
||
|
|
|
||
|
|
// ValidateDisplayName проверяет отображаемое имя (не более 100 символов)
|
||
|
|
func ValidateDisplayName(name string) bool {
|
||
|
|
return len(name) <= 100
|
||
|
|
}
|
||
|
|
|
||
|
|
// ValidateBio проверяет биографию (не более 500 символов)
|
||
|
|
func ValidateBio(bio string) bool {
|
||
|
|
return len(bio) <= 500
|
||
|
|
}
|
||
|
|
|
||
|
|
// IsValidUUID проверяет валидность UUID
|
||
|
|
func IsValidUUID(uuid string) bool {
|
||
|
|
matched, _ := regexp.MatchString("^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$", uuid)
|
||
|
|
return matched
|
||
|
|
}
|
||
|
|
|
||
|
|
// ContainsOnlyPrintable проверяет, что строка содержит только печатаемые символы
|
||
|
|
func ContainsOnlyPrintable(s string) bool {
|
||
|
|
for _, r := range s {
|
||
|
|
if !unicode.IsPrint(r) {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return true
|
||
|
|
}
|