github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/validate/validatetpl/num_string.go (about) 1 package validatetpl 2 3 import ( 4 "fmt" 5 "regexp" 6 ) 7 8 const InvalidNumString = "非法数字字符串" 9 10 var numStringRegexp = regexp.MustCompile(`^\d*$`) 11 12 func NewValidateNumStringLength(min_len int, max_len int) func(v interface{}) (bool, string) { 13 return func(v interface{}) (bool, string) { 14 if stringer, ok := v.(fmt.Stringer); ok { 15 v = stringer.String() 16 } 17 18 if value, ok := v.(string); ok { 19 if !numStringRegexp.MatchString(value) { 20 return false, InvalidNumString 21 } 22 23 str_len := len(value) 24 if str_len < min_len || (str_len > max_len && max_len != STRING_UNLIMIT_VALUE) { 25 return false, fmt.Sprintf(STRING_LENGHT_NOT_IN_RANGE, min_len, max_len, str_len) 26 } 27 return true, "" 28 } 29 30 return false, InvalidNumString 31 } 32 }