如何在Go中验证hh:mma时间格式?

时间:2016-06-02 01:02:34

标签: regex validation go

我需要验证时间的时间格式是:hh:mma

示例:

09:00pm
09:00am
08:55pm
08:54am
1:00pm

我知道我需要使用Go的regexp包及其MatchString方法。但我无法弄清楚我需要传递给MatchString方法以实现我需要的模式。

我还搜索了一个Go验证器包,我可以使用它而不是编写我自己的验证器来验证时间格式,但我找不到符合我需要的验证器。

3 个答案:

答案 0 :(得分:4)

这是一个以该格式验证12小时的正则表达式:

^(0?[1-9]|1[012]):([0-5][0-9])[ap]m$

Regex101 Tested

答案 1 :(得分:0)

迟到了,但我想在正则表达式之外提出另一种解决方案。您可以使用时间包来验证您的值,然后,如果需要,您可以稍后使用结果值。

std::lrint

哪个可以提供以下内容:

package main

import (

  "fmt"
  "time"

)

func main() {

  Form := "3:04pm"
  timesToCheck := []string{"7:54pm", "09:00pm", "09:00am", "08:55pm", "08:54am", "1:00pm", "23:00am"}

  for _, v := range timesToCheck {
    if t, e := time.Parse(Form, v); e != nil {
      fmt.Println(e.Error())
    } else {
      fmt.Printf("%#v\n", t)
    }
  }

}

答案 2 :(得分:-1)

您也可以不使用正则表达式来做到这一点:

if _, err := time.Parse(time.Kitchen, strings.ToUpper("8:20pm")); err == nil {
    //ok
}