Add more term fixes and markdown format fixes

This commit is contained in:
Will
2019-03-03 00:40:37 +08:00
parent accc3cc768
commit d5355ad2ec
69 changed files with 573 additions and 393 deletions

View File

@@ -6,8 +6,8 @@
## 必填欄位
你想要確保從一個表單元素中得到一個值例如前面小節裡面的使用者名稱我們如何處理呢Go 有一個內建函式 `len` 可以取得字串的長度,這樣我們就可以透過 len 來取得資料的長度,例如:
```Go
```Go
if len(r.Form["username"][0])==0{
//為空的處理
}
@@ -18,8 +18,8 @@ if len(r.Form["username"][0])==0{
你想要確保一個表單輸入框中取得的只能是數字,例如,你想透過表單取得某個人的具體年齡是 50 歲還是 10 歲,而不是像“一把年紀了”或“年輕著呢”這種描述
如果我們是判斷正整數,那麼我們先轉化成 int 型別,然後進行處理
```Go
```Go
getint,err:=strconv.Atoi(r.Form.Get("age"))
if err!=nil{
//數字轉化出錯了,那麼可能就不是數字
@@ -31,8 +31,8 @@ if getint >100 {
}
```
還有一種方式就是正則匹配的方式
```Go
```Go
if m, _ := regexp.MatchString("^[0-9]+$", r.Form.Get("age")); !m {
return false
}
@@ -43,8 +43,8 @@ if m, _ := regexp.MatchString("^[0-9]+$", r.Form.Get("age")); !m {
## 中文
有時候我們想透過表單元素取得一個使用者的中文名字,但是又為了保證取得的是正確的中文,我們需要進行驗證,而不是使用者隨便的一些輸入。對於中文我們目前有兩種方式來驗證,可以使用 `unicode` 套件提供的 `func Is(rangeTab *RangeTable, r rune) bool` 來驗證,也可以使用正則方式來驗證,這裡使用最簡單的正則方式,如下程式碼所示
```Go
```Go
if m, _ := regexp.MatchString("^\\p{Han}+$", r.Form.Get("realname")); !m {
return false
}
@@ -53,28 +53,28 @@ if m, _ := regexp.MatchString("^\\p{Han}+$", r.Form.Get("realname")); !m {
我們期望透過表單元素取得一個英文值,例如我們想知道一個使用者的英文名,應該是 astaxie而不是 asta 謝。
我們可以很簡單的透過正則驗證資料:
```Go
```Go
if m, _ := regexp.MatchString("^[a-zA-Z]+$", r.Form.Get("engname")); !m {
return false
}
```
## 電子郵件地址
你想知道使用者輸入的一個 Email 地址是否正確,透過如下這個方式可以驗證:
```Go
```Go
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")
}
```
## 手機號碼
你想要判斷使用者輸入的手機號碼是否正確,透過正則也可以驗證:
```Go
```Go
if m, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`, r.Form.Get("mobile")); !m {
return false
}
@@ -92,8 +92,8 @@ if m, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`, r.Form.Get("mobile")
</select>
```
那麼我們可以這樣來驗證
```Go
```Go
slice:=[]string{"apple","pear","banana"}
v := r.Form.Get("fruit")
@@ -113,8 +113,8 @@ return false
<input type="radio" name="gender" value="2">
```
那我們也可以類似下拉選單的做法一樣
```Go
```Go
slice:=[]string{"1","2"}
for _, v := range slice {
@@ -133,8 +133,8 @@ return false
<input type="checkbox" name="interest" value="tennis">網球
```
對於複選框我們的驗證和單選有點不一樣,因為接收到的資料是一個 slice
```Go
```Go
slice:=[]string{"football","basketball","tennis"}
a:=Slice_diff(r.Form["interest"],slice)
if a == nil{
@@ -150,8 +150,8 @@ return false
,使用者在日程表中安排 8 月份的第 45 天開會,或者提供未來的某個時間作為生日。
Go 裡面提供了一個 time 的處理套件,我們可以把使用者的輸入年月日轉化成相應的時間,然後進行邏輯判斷
```Go
```Go
t := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
fmt.Printf("Go launched at %s\n", t.Local())
```
@@ -159,8 +159,8 @@ fmt.Printf("Go launched at %s\n", t.Local())
## 身份證號碼
如果我們想驗證表單輸入的是否是身份證,透過正則也可以方便的驗證,但是身份證有 15 位和 18 位,我們兩個都需要驗證
```Go
```Go
//驗證 15 位身份證15 位的是全部數字
if m, _ := regexp.MatchString(`^(\d{15})$`, r.Form.Get("usercard")); !m {
return false
@@ -170,8 +170,8 @@ if m, _ := regexp.MatchString(`^(\d{15})$`, r.Form.Get("usercard")); !m {
if m, _ := regexp.MatchString(`^(\d{17})([0-9]|X)$`, r.Form.Get("usercard")); !m {
return false
}
```
上面列出了我們一些常用的伺服器端的表單元素驗證,希望透過這個引匯入門,能夠讓你對 Go 的資料驗證有所了解,特別是 Go 裡面的正則處理。
## links