mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 08:20:25 +08:00 
			
		
		
		
	
		
			
	
	
		
			42 lines
		
	
	
		
			1016 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1016 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package validatorx
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"mayfly-go/pkg/global"
							 | 
						||
| 
								 | 
							
									"regexp"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"github.com/go-playground/validator/v10"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const CustomPatternTagName = "pattern"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var (
							 | 
						||
| 
								 | 
							
									regexpMap     map[string]*regexp.Regexp
							 | 
						||
| 
								 | 
							
									patternErrMsg map[string]string
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 注册自定义正则表达式校验规则
							 | 
						||
| 
								 | 
							
								func RegisterCustomPatterns() {
							 | 
						||
| 
								 | 
							
									// 账号用户名校验
							 | 
						||
| 
								 | 
							
									RegisterPattern("account_username", "^[a-zA-Z0-9_]{5,20}$", "只允许输入5-20位大小写字母、数字、下划线")
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 注册自定义正则表达式
							 | 
						||
| 
								 | 
							
								func RegisterPattern(patternName string, regexpStr string, errMsg string) {
							 | 
						||
| 
								 | 
							
									if regexpMap == nil {
							 | 
						||
| 
								 | 
							
										regexpMap = make(map[string]*regexp.Regexp, 0)
							 | 
						||
| 
								 | 
							
										patternErrMsg = make(map[string]string)
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									regexpMap[patternName] = regexp.MustCompile(regexpStr)
							 | 
						||
| 
								 | 
							
									patternErrMsg[patternName] = errMsg
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func patternValidFunc(f validator.FieldLevel) bool {
							 | 
						||
| 
								 | 
							
									reg := regexpMap[f.Param()]
							 | 
						||
| 
								 | 
							
									if reg == nil {
							 | 
						||
| 
								 | 
							
										global.Log.Warnf("%s的正则校验规则不存在!", f.Param())
							 | 
						||
| 
								 | 
							
										return false
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return reg.MatchString(f.Field().String())
							 | 
						||
| 
								 | 
							
								}
							 |