Regex 日期时间的OCaml正则表达式
我制作了一个正则表达式来解析DD-MM-yyyhh:MM格式的日期和时间,但它似乎不起作用,但我不明白为什么。我没有得到任何错误,但它只是不接受任何日期和时间,我可以传递给我的程序Regex 日期时间的OCaml正则表达式,regex,date,time,ocaml,Regex,Date,Time,Ocaml,我制作了一个正则表达式来解析DD-MM-yyyhh: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]\\
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
我可能做错了什么
{3}
不是Str中的regexp构造
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
非常感谢,它非常有效!我刚开始的第一天正则表达式需要编辑你的dr=\[0-2][0-9]\\\\\\124; 3[0-1]\,因为一个月的00不存在:pHahaha,是的,我更新了它;-顺便说一句,我觉得奇怪,你的年份是2000年之后-这是一个学校项目,我们只需要创建一个火车日志,上面写着他们的旅行日期和时间,我们不知道他们算什么是正确的日期,因为有时候他们真的做了奇怪的测试,所以我们只是认为不可能在2000年之前,顺便说一下,匹配。。。用真->真|假->假真是恶心别担心,我改了