package tools import ( "fmt" "regexp" "time" ) // @Style 身份证验证 func VerfiyIdCard(idCard string) bool { citys := []string{"11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82", "91"} // 长度格式验证 if !regexp.MustCompile("^([\\d]{14,18}[xX\\d]|[\\d]{15})$").MatchString(idCard) { return false } // 省份验证 if !inArray(idCard[0:2], citys) { return false } // 出生年月验证 if len(idCard) == 18 { birth := fmt.Sprintf("%s-%s-%s", idCard[6:10], idCard[10:12], idCard[12:14]) birthday, err := time.Parse("2006-01-02", birth) if err != nil { return false } if birthday.Unix() > time.Now().Unix() { return false } } else { birth := fmt.Sprintf("19%s-%s-%s", idCard[6:8], idCard[8:10], idCard[10:12]) _, err := time.Parse("2006-01-02", birth) if err != nil { return false } } return true } // @Style 邮箱格式验证 func VerifyEmail(email string) bool { pattern := `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*` //匹配电子邮箱 reg := regexp.MustCompile(pattern) return reg.MatchString(email) } func inArray(val string, arr []string) bool { for _, s := range arr { if s == val { return true } } return false }