|
|
- package helper
-
- import (
- "errors"
- "regexp"
- "strings"
- )
-
- /**
- * 验证
- * 2020/08/10
- */
-
- type Validate struct {
- Data []interface{}
- Title []string
- Rule []string //多个规则使用逗号(,)隔开
- }
-
- func (v *Validate) Check() error {
- if len(v.Data) == 0 {
- return nil
- }
- if len(v.Data) != len(v.Title) || len(v.Data) != len(v.Rule) {
- return errors.New("验证参数不对应")
- }
- msg := make([]string, 0)
- var ok bool
- for key, data := range v.Data {
- rules := strings.Split(v.Rule[key], ",") //分隔所有规则
- for _, rule := range rules {
- switch rule {
- case "require":
- ok = require(data)
- if !ok {
- msg = append(msg, StringJoin(v.Title[key], "不能为空"))
- }
- }
- }
- }
- if len(msg) == 0 {
- return nil
- }
- return errors.New(strings.Join(msg, ","))
- }
-
- func require(data interface{}) bool {
- if ToString(data) == "" {
- return false
- }
- return true
- }
-
- // 判断手机号码
- func IsMobile(mobile string) bool {
- result, _ := regexp.MatchString(`^(1[3|4|5|6|7|8]\d{9})$`, mobile)
- if result {
- return true
- } else {
- return false
- }
- }
-
- // 判断邮箱
- func IsEmail(email string) bool {
- pattern := `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*` //匹配电子邮箱
- reg := regexp.MustCompile(pattern)
- return reg.MatchString(email)
- }
|