-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathis.go
127 lines (106 loc) · 1.96 KB
/
is.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package fun
import (
"errors"
"net"
"os"
"strings"
"unicode"
"unicode/utf8"
)
// IsNumber 判断字符串是否全部为数字
func IsNumber(str string) bool {
if len(str) == 0 {
return false
}
for _, r := range str {
if !unicode.IsNumber(r) {
return false
}
}
return true
}
// IsUtf8 判断是否为 UTF-8 编码
func IsUtf8(p []byte) bool {
return utf8.Valid(p)
}
// IsASCIILetter 判断字符串是否全部为ASCII的字母
func IsASCIILetter(str string) bool {
if len(str) == 0 {
return false
}
runeList := []rune(str)
for _, r := range runeList {
if !((65 <= r && r <= 90) || (97 <= r && r <= 122)) {
return false
}
}
return true
}
// IsLetter 判断字符串是否全部为字母
func IsLetter(str string) bool {
if len(str) == 0 {
return false
}
for _, r := range str {
if !unicode.IsLetter(r) {
return false
}
}
return true
}
// IsASCII 判断字符串是否全部 ASCII
func IsASCII(s string) bool {
for i := 0; i < len(s); i++ {
if s[i] > unicode.MaxASCII {
return false
}
}
return true
}
// IsEmail 验证 Email 是否合法
func IsEmail(str string) bool {
if !Blank(str) {
return RegexEmailPattern.MatchString(str)
}
return false
}
// IsExist 文件或目录是否存在
func IsExist(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
if errors.Is(err, os.ErrNotExist) {
return false
}
return false
}
// IsDir 是否是目录
func IsDir(path string) bool {
s, err := os.Stat(path)
if err != nil {
return false
}
return s.IsDir()
}
// IsIp 是否是有效的 IP
func IsIp(ipStr string) bool {
ip := net.ParseIP(ipStr)
return ip != nil
}
// IsIpV4 是否是有效的 IpV4
func IsIpV4(ipStr string) bool {
ip := net.ParseIP(ipStr)
if ip == nil {
return false
}
return strings.Contains(ipStr, ".")
}
// IsIpV6 是否是有效的 IpV6
func IsIpV6(ipStr string) bool {
ip := net.ParseIP(ipStr)
if ip == nil {
return false
}
return strings.Contains(ipStr, ":")
}