Documentation
¶
Overview ¶
Package validator 实现了验证器的基本接口
Index ¶
- func CheckType(k reflect.Kind) (string, bool)
- func Register(kind string, creator ValidatorCreator)
- func RegisterFunc(name string, f interface{}) error
- type BaseNode
- func (this *BaseNode) AddChild(n SyntaxNode)
- func (this *BaseNode) ChangeKind(kind NodeKind)
- func (this *BaseNode) Kind() NodeKind
- func (this *BaseNode) Left() SyntaxNode
- func (this *BaseNode) Parent() SyntaxNode
- func (this *BaseNode) Right() SyntaxNode
- func (this *BaseNode) SetLeft(n SyntaxNode)
- func (this *BaseNode) SetParent(p SyntaxNode)
- func (this *BaseNode) SetRight(n SyntaxNode)
- type Error
- type ExecutableFuncNode
- type FuncNode
- type Lexer
- type NamedFunc
- type NodeKind
- type Parser
- type RegFunc
- type StringValidator
- type SyntaxNode
- type Token
- type TokenKind
- type Validator
- type ValidatorCreator
- type ValidatorFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterFunc ¶
RegisterFunc 注册验证函数,验证函数的第一个参数必须是string,并且其他参数只能是int64,float64,string三种类型,返回值必须是bool类型
Types ¶
type Error ¶
type Error string
错误信息
const ( ErrorInvalidValidatorCreator Error = "ErrorInvalidValidatorCreator(V10000):无效的连接创建器" ErrorInvalidKind Error = "ErrorInvalidKind(V10010):无效的验证器类型(%s)" ErrorIllegalNode Error = "ErrorIllegalNode(V10011):严重错误,当前验证器出现非法节点(%s)" ErrorIllegalParam Error = "ErrorIllegalParam(V10012):严重错误,当前验证器出现非法参数(%s)" ErrorIllegalParser Error = "ErrorIllegalParser(V10020):严重错误,当前解析器无法正确的解析字符串" ErrorInvalidFuncName Error = "ErrorInvalidFuncName(V10020):无效的函数名称(%s)" ErrorMustBeFunc Error = "ErrorMustBeFunc(V10021):使用了非函数类型(%s)进行注册" ErrorIncorrectParamList Error = "ErrorIncorrectParamList(V10030):函数拥有不正确的参数列表(%s)" ErrorFirstParamMustBeString Error = "ErrorFirstParamMustBeString(V10031):函数首个参数必须是字符串(%s)" ErrorIncorrectParamType Error = "ErrorIncorrectParamType(V10032):函数的第%d个参数类型(%s)不正确)" ErrorUnmatchedFunc Error = "ErrorUnmatchedFunc(V10040):验证函数(%s)不存在,请确保已经注册了该验证函数" ErrorInvalidChar Error = "ErrorInvalidChar(V11000):无效的字符(位置:%d,%s)" ErrorInvalidLogicalAnd Error = "ErrorInvalidLogicalAnd(V11010):逻辑与的形式必须是&&(位置:%d)" ErrorInvalidLogicalOr Error = "ErrorInvalidLogicalOr(V11020):逻辑或的形式必须是||(位置:%d)" ErrorInvalidRelop Error = "ErrorInvalidRelop(V11030):关系运算符错误,缺少符号=(位置:%d)" ErrorUnmatchEnding Error = "ErrorUnmatchEnding(V11040):字符序列缺少结束标记(位置:%d,%s)" ErrorInvalidNumberFormat Error = "ErrorInvalidNumberFormat(V11050):数值格式错误,+/-之后必须是数字(位置:%d)" ErrorInvalidFloat Error = "ErrorInvalidFloat(V11051):浮点格式错误,浮点数中不能包含两个小数点(位置:%d)" ErrorInvalidExpr Error = "ErrorInvalidExpr(V12000):无效的表达式,表达式尾部含有未被解析的内容(位置:%d,%s)" ErrorInvalidExprHead Error = "ErrorInvalidExprHead(V12001):无效的表达式,表达式的第一个标记必须是左括号或函数(位置:%d)" ErrorInvalidConnector Error = "ErrorInvalidConnector(V12010):必须使用&&或||连接表达式或函数,而不是(位置:%d,%s)" ErrorInvalidRelopFuncParams Error = "ErrorInvalidRelopFuncParams(V12020):关系函数参数列表错误(位置:%d,%s)" ErrorInvalidNamedRelopFuncParams Error = "ErrorInvalidNamedRelopFuncParams(V12021):命名关系函数参数列表错误(位置:%d,%s)" ErrorInvalidFuncParams Error = "ErrorInvalidFuncParams(V12022):函数参数列表错误(位置:%d,%s)" ErrorInvalidFunc Error = "ErrorInvalidFunc(V12030):无法识别的函数(位置:%d,%s)" ErrorInvalidParamsList Error = "ErrorInvalidParamsList(V12040):参数列表中存在无效的分隔符(位置:%d,%s)" ErrorInvalidParamType Error = "ErrorInvalidParamType(V12050):参数列表中使用了错误的参数(位置:%d,%s)" ErrorUnmatchedToken Error = "ErrorUnmatchedToken(V12060):类型匹配错误,需要的类型为(%s),实际类型为(位置:%d,%s)" )
错误码
type ExecutableFuncNode ¶
type ExecutableFuncNode struct { BaseNode // contains filtered or unexported fields }
可执行执行函数节点,由FuncNode和RegFuncNode转换而成
func (*ExecutableFuncNode) Execute ¶
func (this *ExecutableFuncNode) Execute(str string) bool
Execute 执行
type Lexer ¶
词法分析器
type StringValidator ¶
type StringValidator struct {
Tree SyntaxNode
}
字符串验证器
1.使用()改变优先级 2.使用&&和||连接函数或表达式 3.函数包括以下几种 (1)普通函数:IsOK IsOK() BigThan(1234) Contain('abc') (2)名称中包含关系运算符:>=10 Len==11 Complex<(12,22) (3)正则表达式:/[a-z]+?/
func (*StringValidator) Validate ¶
func (this *StringValidator) Validate(str string) bool
Validate 验证
type SyntaxNode ¶
type SyntaxNode interface { // Kind 语法节点类型 Kind() NodeKind // ChangeKind 改变语法节点类型 ChangeKind(kind NodeKind) // Parent 获取父节点 Parent() SyntaxNode // SetParent 设置父节点 SetParent(n SyntaxNode) // Left 返回左节点 Left() SyntaxNode // SetLeft 设置左节点 SetLeft(n SyntaxNode) // Right 返回右节点 Right() SyntaxNode // SetRight 设置右节点 SetRight(n SyntaxNode) // AddChild 添加子节点 AddChild(n SyntaxNode) }
语法节点接口
func NewExecutableFuncNode ¶
func NewExecutableFuncNode(v ValidatorFunc, params []interface{}) SyntaxNode
NewExecutableFuncNode 创建可执行执行函数节点
type Token ¶
type Token struct { Kind TokenKind //标记类型 Pos int //起始位置 Len int //长度 Value interface{} //Token值,TokenKindInteger->int64,TokenKindFloat->float64,其他->string }
标记
func (*Token) Float64Value ¶
Float64Value 返回浮点类型的值,使用前确保Value为float64类型
func (*Token) Int64Value ¶
Int64Value 返回整数类型的值,使用前确保Value为int64类型
func (*Token) StringValue ¶
StringValue 返回字符串类型的值,使用前确保Value为string类型
type ValidatorFunc ¶
验证器函数
Click to show internal directories.
Click to hide internal directories.