Regex 使用验证V2 Golang软件包的正则表达式电话号码不起作用
我在使用Regex 使用验证V2 Golang软件包的正则表达式电话号码不起作用,regex,go,Regex,Go,我在使用github.com/go validator/validator验证带有此前缀+62,62,0的regex某些电话号码时遇到一些问题,例如+628112blabla、0822blablabla、628796blabla 我已经试过我的正则表达式了,在这方面没有任何问题。这里的正则表达式是: (0|\+62|062|62)[0-9]+$ 但是当我尝试使用go工具时,正则表达式不起作用。这是我的代码,用于实现以下目的: type ParamRequest struct { Pho
github.com/go validator/validator
验证带有此前缀+62,62,0的regex某些电话号码时遇到一些问题,例如+628112blabla、0822blablabla、628796blabla
我已经试过我的正则表达式了,在这方面没有任何问题。这里的正则表达式是:
(0|\+62|062|62)[0-9]+$
但是当我尝试使用go工具时,正则表达式不起作用。这是我的代码,用于实现以下目的:
type ParamRequest struct {
PhoneNumber string `validate:"nonzero,regexp=(0|\+62|062|62)[0-9]+$"`
ItemCode string `validate:"nonzero"`
CallbackUrl string `validate:"nonzero"`
}
func (c *TopupAlloperatorApiController) Post() {
var v models.TopupAlloperatorApi
interf := make(map[string]interface{})
json.Unmarshal(c.Ctx.Input.RequestBody, &interf)
logs.Debug(" Json Input Request ", interf)
var phone, item, callback string
if _, a := interf["PhoneNumber"].(string); a {
phone = interf["PhoneNumber"].(string)
}
if _, b := interf["ItemCode"].(string); b {
item = interf["ItemCode"].(string)
}
if _, c := interf["CallbackUrl"].(string); c {
callback = interf["CallbackUrl"].(string)
}
ve := ParamRequest{
PhoneNumber: phone,
ItemCode: item,
CallbackUrl: callback,
}
logs.Debug(" Param Request ", ve)
err := validator.Validate(ve)
if err == nil {
//success
}else{
// not success
}
非常感谢您的帮助。谢谢。因为您正在使用regexp检查
电话号码
,如果该值为空,则该号码将不匹配。最好从验证中删除非零。
我已经查阅了文档,还没有找到可以同时使用的示例:nonzero
和regexp
您还需要转义您的正则表达式符号,否则它将不会被反射检测到。这意味着您应该在代码中使用(0-9]+$
。下面是问题所在的示例:
另外,请尝试使用此regexp:^\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
我已经查阅了文档,还没有找到可以同时使用的示例:nonzero
和regexp
您还需要转义您的正则表达式符号,否则它将不会被反射检测到。这意味着您应该在代码中使用(0-9]+$
。下面是问题所在的示例:
另外,请尝试使用这个regexp:^\\+{0,1}0{0,1}62[0-9]+$
我相信您实际上也希望使用^
在字符串的开头锚定匹配:^(0-9]+$
。你说它不起作用是什么意思?我也尝试过使用^。我第一次使用^,直到我获得验证我的正则表达式的在线测试仪链接。我的golang代码不能正常工作。这就像跳过所有验证,但是如果我删除正则表达式验证,所有验证(非零验证)都会正常工作。我相信您实际上也希望使用^
在字符串开头锚定匹配:^(0 |\+62 | 062 | 62)[0-9]+$
。你说它不起作用是什么意思?我也尝试过使用^。我第一次使用^,直到我获得验证我的正则表达式的在线测试仪链接。我的golang代码不能正常工作。这就像跳过所有验证,但是如果我删除正则表达式验证,所有验证(非零验证)都会正常工作。太好了。。谢谢它正在工作。这都是关于结构标记中的符号转义。我使用的是(0 |\\+62 | 062 | 62)[0-9]+$
,也使用非零验证<代码>键入ParamRequest结构{PhoneNumber string
验证:“非零,regexp=^(0-9]+$”`ItemCode string验证:“非零”
}`ThanksGreat。。谢谢它正在工作。这都是关于结构标记中的符号转义。我使用的是(0 |\\+62 | 062 | 62)[0-9]+$
,也使用非零验证<代码>键入ParamRequest结构{PhoneNumber string
验证:“非零,regexp=^(0-9]+$”`ItemCode string验证:“非零”
}`谢谢