@@ -3,6 +3,7 @@ package utils
3
3
import (
4
4
"errors"
5
5
"reflect"
6
+ "regexp"
6
7
"strconv"
7
8
"strings"
8
9
)
@@ -38,6 +39,15 @@ func NotEmpty() string {
38
39
return "notEmpty"
39
40
}
40
41
42
+ //@author: [zooqkl](https://github.com/zooqkl)
43
+ //@function: RegexpMatch
44
+ //@description: 正则校验 校验输入项是否满足正则表达式
45
+ //@param: rule string
46
+ //@return: string
47
+ func RegexpMatch (rule string ) string {
48
+ return "regexp=" + rule
49
+ }
50
+
41
51
//@author: [piexlmax](https://github.com/piexlmax)
42
52
//@function: Lt
43
53
//@description: 小于入参(<) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较
@@ -134,6 +144,10 @@ func Verify(st interface{}, roleMap Rules) (err error) {
134
144
if isBlank (val ) {
135
145
return errors .New (tagVal .Name + "值不能为空" )
136
146
}
147
+ case strings .Split (v , "=" )[0 ] == "regexp" :
148
+ if ! regexpMatch (strings .Split (v , "=" )[1 ], val .String ()) {
149
+ return errors .New (tagVal .Name + "格式校验不通过" )
150
+ }
137
151
case compareMap [strings .Split (v , "=" )[0 ]]:
138
152
if ! compareVerify (val , v ) {
139
153
return errors .New (tagVal .Name + "长度或值不在合法范围," + v )
@@ -267,3 +281,7 @@ func compare(value interface{}, VerifyStr string) bool {
267
281
return false
268
282
}
269
283
}
284
+
285
+ func regexpMatch (rule , matchStr string ) bool {
286
+ return regexp .MustCompile (rule ).MatchString (matchStr )
287
+ }
0 commit comments