go参数验证

2020-08-26  本文已影响0人  宋song一

一、go浮点数转字符串保留小数点后N位,并且去掉小数点后0

// 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果
func FormatFloat(num float64, decimal int) string {
 // 默认乘1
 d := float64(1)
 if decimal > 0 {
  // 10的N次方
  d = math.Pow10(decimal)
 }
 // math.trunc作用就是返回浮点数的整数部分
 // 再除回去,小数点后无效的0也就不存在了
 return strconv.FormatFloat(math.Trunc(num*d)/d, 'f', -1, 64)
}

二、go web接收参数的验证

gin默认验证器

必填字段验证:

  len(r.Form["neme"][0])==0
  len(r.FormValue("name"))==0

密码的正则验证

      m,_=regexp.MatchString(`^([A-Z]|[a-z]|[0-9]|[-=[;,./~!@#$%^*()_+}{:?]){6,20}$`,r.Form.Get("password"))

数字验证:

getint,err:=strconv.Itoa(r.FormValue("name"))
if err!=nil{
//可能不是数字
}
中文验证:
m,_:=regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$",r.Form.Get("name"))
if !=m{
//可能不是数字
return false
}

英文验证

m,_:=regexp.MatchString("^[a-zA-z]+$",r.Form.Get("name"))
if !=m{
//可能不是英文
return false
}

电子邮箱验证:

m,_:=regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,}).([a-z](2,4))$`,r.Form.Get("name"))
if !=m{
//可能不是电子邮箱
return false
}   

手机号码验证:

m,_:=regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`,r.Form.Get("name"))
if !=m{
//可能不是手机号码
return false
}   

身份证号码
十八位:

^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

十五位:

^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$
上一篇下一篇

猜你喜欢

热点阅读