go

go

go-web常用表单验证

Posted by Liangjf on August 11, 2019

go-web常用表单验证

在go web开发中,对于客户端传过来的表单必须是保持不信任的状态,都要做严格的验证。以下是一些常用的表单验证。

中文

if m, _ := regexp.MatchString("^[\\x{4e00}-\\x{9fa5}]+$", r.Form.Get("realname")); !m {
    return false
}

英文

if m, _ := regexp.MatchString("^[a-zA-Z]+$", r.Form.Get("engname")); !m {
    return false
}

电子邮件地址

if m, _ := regexp.MatchString(`^([\w\.\_]{2,10})@(\w{1,}).([a-z]{2,4})$`, r.Form.Get("email")); !m {
    fmt.Println("no")
}else{
    fmt.Println("yes")
}

手机号码

if m, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`, r.Form.Get("mobile")); !m {
    return false
}

下拉菜单

slice:=[]string{"apple","pear","banane"}
for _, v := range slice {
    if v == r.Form.Get("fruit") {
        return true
    }
}
return false

单选按钮

slice:=[]int{1,2}
for _, v := range slice {
    if v == r.Form.Get("gender") {
        return true
    }
}
return false

复选框

slice:=[]string{"football","basketball","tennis"}
a:=Slice_diff(r.Form["interest"],slice)
if a == nil{
    return true
}
return false

身份证号码

//验证15位身份证,15位的是全部数字

if m, _ := regexp.MatchString(`^(\d{15})$`, r.Form.Get("usercard")); !m {
    return false
}

//验证18位身份证,18位前17位为数字,最后一位是校验位,可能为数字或字符X。

if m, _ := regexp.MatchString(`^(\d{17})([0-9]|X)$`, r.Form.Get("usercard")); !m {
    return false
}