mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 11:27:17 +08:00
30 lines
513 B
Go
30 lines
513 B
Go
package rule
|
||
|
||
import (
|
||
"regexp"
|
||
"strings"
|
||
|
||
"github.com/go-playground/validator/v10"
|
||
)
|
||
|
||
type Regex struct{}
|
||
|
||
func NewRegex() *Regex {
|
||
return &Regex{}
|
||
}
|
||
|
||
func (r *Regex) Regex(fl validator.FieldLevel) bool {
|
||
// 从标签中获取正则,格式类似于 `regex=^[a-zA-Z0-9_]+$`
|
||
pattern := fl.Param()
|
||
// 替换转义字符
|
||
pattern = strings.ReplaceAll(pattern, ",", ",")
|
||
|
||
re, err := regexp.Compile(pattern)
|
||
if err != nil {
|
||
return false
|
||
}
|
||
|
||
value := fl.Field().String()
|
||
return re.MatchString(value)
|
||
}
|