OCaml正则表达式为日期时间

时间:2017-05-16 10:27:31

标签: regex date time ocaml

我制作了一个正则表达式来解析格式“DD-MM-YYYYhh:mm”的日期和时间,但它似乎不起作用我不知道为什么。我没有收到任何错误,但它只是不接受我可以传递给我的程序的任何日期和时间。

let checkDate d t =
    match Str.string_match (Str.regexp "\\([0][1-9]\\|[12][0-9]\\|3[0-1]\\)-\\([0][1-9]\\|1[0-2]\\)-\\(2[0-9]{3}\\)\\([0-1][0-9]\\|2[0-3]\\):\\([0-50-9]\\)") (d ^ t) 0 with
    | true  -> true
    | false -> false
in

我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

{3}

不是Str。中的正则表达式构造。

let checkDate d t =
  let dr = "\\(0[1-9]\\|[12][0-9]\\|3[0-1]\\)" in
  let mr = "\\([0][1-9]\\|1[0-2]\\)" in
  let yr = "\\(2[0-9][0-9][0-9]\\)" in
  let hr = "\\([0-1][0-9]\\|2[0-3]\\):\\([0-50-9]\\)" in
  Str.string_match (Str.regexp (dr ^ "-" ^ mr ^ "-" ^ yr ^ hr)) (d ^ t) 0

此功能有效。

# checkDate "16-05-2017" "12:55";;
- : bool = true

# checkDate "16-05-2017" "12:65";;
- : bool = false