temp
This commit is contained in:
@@ -38,6 +38,18 @@ func init() {
|
||||
if err := validate.RegisterValidation("validTimeRange", validTimeRange); err != nil {
|
||||
panic(fmt.Sprintf("注册 validTimeRange 验证器时发生错误: %v", err))
|
||||
}
|
||||
|
||||
if err := validate.RegisterValidation("validBankCard", validBankCard); err != nil {
|
||||
panic(fmt.Sprintf("注册 validBankCard 验证器时发生错误: %v", err))
|
||||
}
|
||||
|
||||
if err := validate.RegisterValidation("validUSCI", validUSCI); err != nil {
|
||||
panic(fmt.Sprintf("注册 validUSCI 验证器时发生错误: %v", err))
|
||||
}
|
||||
|
||||
if err := validate.RegisterValidation("validMobileType", validMobileType); err != nil {
|
||||
panic(fmt.Sprintf("注册 validMobileType 验证器时发生错误: %v", err))
|
||||
}
|
||||
}
|
||||
|
||||
// ValidateAndParse 封装了解密、解析和校验逻辑
|
||||
@@ -110,3 +122,35 @@ func validTimeRange(fl validator.FieldLevel) bool {
|
||||
}
|
||||
return true
|
||||
}
|
||||
func validBankCard(fl validator.FieldLevel) bool {
|
||||
bankCard := fl.Field().String()
|
||||
// 银行卡号一般是13到19位的数字
|
||||
validBankCardPattern := `^\d{13,19}$`
|
||||
matched, _ := regexp.MatchString(validBankCardPattern, bankCard)
|
||||
return matched
|
||||
}
|
||||
|
||||
func validUSCI(fl validator.FieldLevel) bool {
|
||||
usci := fl.Field().String()
|
||||
// 社会信用代码为18位数字和大写字母的组合,最后一位为校验码
|
||||
validUSCIPattern := `^[1-9A-Z]{2}[0-9]{6}[0-9A-Z]{9}[0-9A-Z]$`
|
||||
matched, _ := regexp.MatchString(validUSCIPattern, usci)
|
||||
return matched
|
||||
}
|
||||
|
||||
// 自定义的手机号类型验证(可以为空)
|
||||
func validMobileType(fl validator.FieldLevel) bool {
|
||||
mobileType := fl.Field().String()
|
||||
if mobileType == "" {
|
||||
return true // 如果为空,认为是有效的
|
||||
}
|
||||
|
||||
// 校验是否是 CTCC, CMCC, CUCC 之一
|
||||
validTypes := map[string]bool{
|
||||
"CTCC": true, // 中国电信
|
||||
"CMCC": true, // 中国移动
|
||||
"CUCC": true, // 中国联通
|
||||
}
|
||||
|
||||
return validTypes[mobileType]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user