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