私は現在使用しています:
[0-1]{1}[0-9]{1}[0-3]{1}[0-9]{1}[0-1]{1}[0-9]{1}
6桁の日付に一致します。これをより制限する方法はありますか?私の問題は、テキストに他の6〜8桁の数字が含まれていて、日付以外のシーケンスで時折誤検知が発生することです。
助言がありますか ?
ありがとう !
psは、年が常に2000を超え、現在の日付よりも小さいため、年に制限があると言う必要があります。
これには、実際の可能な値の解析を簡単にするだけでなく(つまり、13か月目は無効)、うるう年などに備えるために、実際の日付パーサーを使用する必要があります。
通常、お気に入りの言語の日付パーサーは、MMDDYY形式の文字列を解析し、失敗した場合に何らかのフィードバックを提供できる必要があります。
1つの改善、わずか12か月、31日、および2000年から2012年。
(?:0[1-9]|1[0-2])(?:0[1-9]|[1-2][0-9]|3[0-1])(?:200[0-9]|201[1-2])
これらのダッシュのいくつかは必要ないことを私は知っています。読みやすくするために追加しました。
その後、月に応じて28日、30日、または31日間さらに進むことができます。
(?:(?:0[13578]|1[02])31|(?:0[13-9]|1[0-2])(?:29|30)|(?:0[1-9]|1[0-2])(?:0[1-9]|1[0-9]|2[0-8]))(?:200[0-9]|201[1-2])
うるう年を把握する方法は技術的にはありますが、それは少しやり過ぎです。
http://www.regular-expressions.info/dates.html ところで:正規表現だけではうるう年を処理することはできません(理論的には可能ですが、実用的ではありません)。適切な日付パーサーを使用する必要があります。
この正規表現を使用します[0-1]\d[0-3]\d[2-9]\d{3}
が、現在の日付と対話することはできません