使用github.com/go-validator/validator
驗證正則表達式某些電話號碼時,使用此前綴+62,62,0(例如實例編號)可能會遇到一些麻煩。 + 628112blabla,0822blablabla,628796blablabla。正則表達式電話號碼使用驗證V2 Golang包不起作用
我在online regex tester上試過我的正則表達式,並且沒有任何關於正則表達式的問題。這裏的正則表達式是:
(0|\+62|062|62)[0-9]+$
但是,當我嘗試用我的去執行它,正則表達式不工作。這是我的代碼實現的目的:
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
}
非常感謝任何幫助。謝謝。
我相信你真的想使用'^'在字符串的開始錨比賽,太:'^( 0 | \ 62 | 062 | 62)[0-9] + $'。你的意思是什麼不起作用? –
我試過用^了,但還是一樣的。我有第一次使用^,直到我在線測試人員鏈接驗證我的正則表達式。我的golang代碼無法正常工作。這就像跳過所有的驗證,但如果我刪除正則表達式驗證,所有驗證(非零驗證)正常工作。 –