2017-05-16 13 views
0

"DD-MM-YYYYhh:mm"という形式の日付と時刻を解析するための正規表現を作ったが、それはうまくいかなかったようだ。私はエラーはありませんが、私のプログラムに渡すことができる日時は受け入れられません。OCaml正規表現日付時間

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
{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 
+0

ありがとうございます。月の00が存在しないため、私の最初の一日の正規表現のために "dr =" \\([0-2] [0-9] \\ | 3 [0-1] \\) :p –

+0

ハハハ、はい、私はそれを更新しました;-)あなたの年が2000年以降であることは奇妙です。;-) – Lhooq

+0

それは学校プロジェクトのために、旅行の日時、実際には彼らが正しい日として何を数えるのか本当に分かっていない。なぜならいつか彼らは本当に奇妙なテストをするので、それは2000年前にはできないと考えていたからだ。xD –

関連する問題