30 lines
483 B
Go
30 lines
483 B
Go
package core
|
|
|
|
import "strings"
|
|
|
|
// ===== UUID-утилиты =====
|
|
|
|
func isUUIDLike(value string) bool {
|
|
trimmed := strings.TrimSpace(value)
|
|
if len(trimmed) != 36 {
|
|
return false
|
|
}
|
|
for i, r := range trimmed {
|
|
switch i {
|
|
case 8, 13, 18, 23:
|
|
if r != '-' {
|
|
return false
|
|
}
|
|
default:
|
|
if !isHexDigit(r) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
func isHexDigit(r rune) bool {
|
|
return (r >= '0' && r <= '9') || (r >= 'a' && r <= 'f') || (r >= 'A' && r <= 'F')
|
|
}
|