数据验证 @param val 字符串 @param rule 验证规则,见Valid()注释 @param args 变参参数 @return 返回验证错误
(val, rule string, args ...string)
| 158 | //@param args 变参参数 |
| 159 | //@return 返回验证错误 |
| 160 | func execValid(val, rule string, args ...string) error { |
| 161 | rule = strings.ToLower(rule) |
| 162 | switch rule { |
| 163 | //验证邮箱格式 |
| 164 | case "email": |
| 165 | res := valid.Email(val, "email") |
| 166 | if !res.Ok || res.Error != nil { |
| 167 | return errors.New("邮箱格式不正确") |
| 168 | } |
| 169 | //验证手机、座机格式 |
| 170 | case "phone": |
| 171 | res := valid.Phone(val, "phone") |
| 172 | if !res.Ok || res.Error != nil { |
| 173 | return errors.New("联系电话格式不正确") |
| 174 | } |
| 175 | //验证手机号码 |
| 176 | case "mobile": |
| 177 | res := valid.Phone(val, "mobile") |
| 178 | if !res.Ok || res.Error != nil { |
| 179 | return errors.New("手机号码格式不正确") |
| 180 | } |
| 181 | //验证座机号码 |
| 182 | case "tel": |
| 183 | res := valid.Phone(val, "tel") |
| 184 | if !res.Ok || res.Error != nil { |
| 185 | return errors.New("座机号码格式不正确") |
| 186 | } |
| 187 | //字符长度校验 |
| 188 | case "len", "count": |
| 189 | if len(args) > 0 { |
| 190 | num, _ := strconv.ParseInt(args[0], 10, 64) |
| 191 | if rule == "count" { |
| 192 | if strings.Count(val, "")-1 != int(num) { |
| 193 | return errors.New(fmt.Sprintf("字符个数限制在%v个字符", num)) |
| 194 | } |
| 195 | } else { |
| 196 | if len(val) != int(num) { |
| 197 | return errors.New(fmt.Sprintf("字符个数限制在%v个字符", num)) |
| 198 | } |
| 199 | } |
| 200 | } |
| 201 | //最大最小值校验 |
| 202 | case "min", "max": |
| 203 | if len(args) > 0 { |
| 204 | num, _ := strconv.ParseFloat(args[0], 64) |
| 205 | parseVal, _ := strconv.ParseFloat(val, 64) |
| 206 | if rule == "min" { |
| 207 | if parseVal < num { |
| 208 | return errors.New(fmt.Sprintf("最小值不能小于%v", num)) |
| 209 | } |
| 210 | } else { |
| 211 | if parseVal > num { |
| 212 | return errors.New(fmt.Sprintf("最大值不能大于%v", num)) |
| 213 | } |
| 214 | } |
| 215 | } |
| 216 | case "gt": |
| 217 | if len(args) > 0 { |