表單資料驗證
#安裝及測試
##安裝:
go get github.com/astaxie/beego/validation
##測試:
go test github.com/astaxie/beego/validation
import (
"github.com/astaxie/beego/validation"
"log"
)
type User struct {
Name string
Age int
}
func main() {
u := User{"man", 40}
valid := validation.Validation{}
valid.Required(u.Name, "name")
valid.MaxSize(u.Name, 15, "nameMax")
valid.Range(u.Age, 0, 18, "age")
if valid.HasErrors() {
// 如果有錯誤資訊,證明驗證沒通過
// 列印錯誤資訊
for _, err := range valid.Errors {
log.Println(err.Key, err.Message)
}
}
// or use like this
if v := valid.Max(u.Age, 140, "age"); !v.Ok {
log.Println(v.Error.Key, v.Error.Message)
}
// 定製錯誤資訊
minAge := 18
valid.Min(u.Age, minAge, "age").Message("少兒不宜!")
// 錯誤資訊格式化
valid.Min(u.Age, minAge, "age").Message("%d不禁", minAge)
}
通過 StructTag 使用示例:
import (
"log"
"strings"
"github.com/astaxie/beego/validation"
)
// 驗證函式寫在 "valid" tag 的標籤裡
// 各個函式之間用分號 ";" 分隔,分號後面可以有空格
// 引數用括號 "()" 括起來,多個引數之間用逗號 "," 分開,逗號後面可以有空格
// 正則函式(Match)的匹配模式用兩斜槓 "/" 括起來
// 各個函式的結果的 key 值為欄位名.驗證函式名
type user struct {
Id int
Name string `valid:"Required;Match(/^Bee.*/)"` // Name 不能為空並且以 Bee 開頭
Age int `valid:"Range(1, 140)"` // 1 <= Age <= 140,超出此範圍即為不合法
Email string `valid:"Email; MaxSize(100)"` // Email 欄位需要符合郵箱格式,並且最大長度不能大於 100 個字元
Mobile string `valid:"Mobile"` // Mobile 必須為正確的手機號
IP string `valid:"IP"` // IP 必須為一個正確的 IPv4 地址
}
// 如果你的 struct 實現了介面 validation.ValidFormer
// 當 StructTag 中的測試都成功時,將會執行 Valid 函式進行自定義驗證
func (u *user) Valid(v *validation.Validation) {
if strings.Index(u.Name, "admin") != -1 {
// 通過 SetError 設定 Name 的錯誤資訊,HasErrors 將會返回 true
v.SetError("Name", "名稱裡不能含有 admin")
}
}
func main() {
valid := validation.Validation{}
u := user{Name: "Beego", Age: 2, Email: "dev@beego.me"}
b, err := valid.Valid(&u)
if err != nil {
// handle error
}
if !b {
// validation does not pass
// blabla...
for _, err := range valid.Errors {
log.Println(err.Key, err.Message)
}
}
}
StructTag 可用的驗證函式:
- Required 不為空,即各個型別要求不為其零值
- Min(min int) 最小值,有效型別:
int
,其他型別都將不能通過驗證 - Max(max int) 最大值,有效型別:
int
,其他型別都將不能通過驗證 - MinSize(min int) 最小長度,有效型別:
string,slice
,其他型別都將不能通過驗證 - MaxSize(max int) 最大長度,有效型別:
string,slice
,其他型別都將不能通過驗證 - Length(length int) 指定長度,有效型別:
string,slice
,其他型別都將不能通過驗證 - Numeric數字,有效型別:
string
,其他型別都將不能通過驗證 - AlphaNumeric alpha字元或數字,有效型別:
string
,其他型別都將不能通過驗證 - Match(pattern string)正則匹配,有效型別:
string
,其他型別都將被轉成字串再匹配(fmt.Sprintf(“%v”, obj).Match)
- IP
IP
格式,目前只支援 IPv4格式驗證,有效型別:string
,其他型別都將不能通過驗證 - Base64 base64編碼,有效型別:
string
,其他型別都將不能通過驗證 - Tel固定電話號,有效型別:
string
,其他型別都將不能通過驗證 - Phone手機號或固定電話號,有效型別:
string
,其他型別都將不能通過驗證 - ZipCode郵政編碼,有效型別:
string
,其他型別都將不能通過驗證
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
相關文章
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- PHP 表單提交後臺資料驗證 ValidatorPHP
- beego表達資料驗證Go
- Laravel 表單驗證Laravel
- javascript表單驗證JavaScript
- bootstrap表單驗證boot
- bootstrapValidator 表單驗證boot
- JavaScript 表單驗證JavaScript
- antd 表單驗證
- iview 表單提交資料的時候驗證問題View
- element-ui使用from表單驗證資料問題UI
- 表單required 必需驗證UI
- HTML 表單驗證概述HTML
- 表單驗證 regex:pattern
- 輸入表單驗證
- 路由表單驗證路由
- vue+elementUI 複雜表單的驗證、資料提交方案VueUI
- vue表單驗證你真的會了嗎?元件之表單驗證(form)validateVue元件ORM
- 資料庫課程作業筆記 - 編寫表單驗證資料庫筆記
- Laravel 8 表單驗證丟擲異常返回 json 格式資料LaravelJSON
- 利用js編寫一個簡單的html表單驗證,驗證通過時提交資料(附原始碼)JSHTML原始碼
- iview表單驗證問題 Select驗證必填失敗,以及表單物件巢狀陣列驗證方法View物件巢狀陣列
- jquery.validate 表單驗證jQuery
- validate表單驗證外掛
- Lumen 仿 Laravel 表單驗證Laravel
- 前端表單驗證的目的前端
- 表單驗證教程簡介
- Layui 自定義表單驗證UI
- 表單驗證工具類ValidationUtils
- Laravel 的表單驗證 , 如何做到驗證並改變 ( 轉換 ) 資料 ?( 使用中介軟體 )Laravel
- elementui表單驗證 對比兩個表單大小UI
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- 用onsubmit做簡單表單驗證(37)MIT
- jQuery表單驗證效果詳解jQuery
- 純CSS實現表單驗證CSS
- SpringMVC表單驗證器的使用SpringMVC
- JavaScript表單不為空驗證JavaScript
- 表單驗證使用擴充套件套件