package required import ( "regexp" "github.com/go-playground/validator/v10" ) type Option struct { ValidatorName string ValidatorFunc func(fl validator.FieldLevel) bool } // WithAccount 創建一個新的 Option 結構,包含自定義的驗證函數,用於驗證 email 和台灣的手機號碼格式 func WithAccount(tagName string) Option { return Option{ ValidatorName: tagName, ValidatorFunc: func(fl validator.FieldLevel) bool { value := fl.Field().String() emailRegex := `^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,}$` phoneRegex := `^(\+886|0)?9\d{8}$` emailMatch, _ := regexp.MatchString(emailRegex, value) phoneMatch, _ := regexp.MatchString(phoneRegex, value) return emailMatch || phoneMatch }, } }