-
Notifications
You must be signed in to change notification settings - Fork 0
/
phone.go
50 lines (44 loc) · 878 Bytes
/
phone.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package typ
import (
"bytes"
"regexp"
"strings"
)
// IsPhone
func IsPhone(phone string) bool {
reg := regexp.MustCompile(`^\d{1,4}-\d{6,11}$`)
flag := reg.MatchString(phone)
return flag
}
// IsChinesePhone
func IsChinesePhone(phone string) bool {
if IsPhone(phone) {
return strings.HasPrefix(phone, "86-") || !strings.Contains(phone, "-")
} else {
return false
}
}
// HidePhoneMiddle eg:86-187****0987
func HidePhoneMiddle(phone string) string {
hidden := "****"
if phone == "" {
return hidden
}
arr := strings.Split(phone, "-")
if len(arr) != 2 {
return hidden
}
number := arr[1]
if len(number) < 7 {
return hidden
}
prefix := number[0:3]
suffix := number[len(number)-4:]
var buf bytes.Buffer
buf.WriteString(arr[0])
buf.WriteString("-")
buf.WriteString(prefix)
buf.WriteString(hidden)
buf.WriteString(suffix)
return buf.String()
}