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  }