1

私は現在使用しています:

[0-1]{1}[0-9]{1}[0-3]{1}[0-9]{1}[0-1]{1}[0-9]{1}

6桁の日付に一致します。これをより制限する方法はありますか?私の問題は、テキストに他の6〜8桁の数字が含まれていて、日付以外のシーケンスで時折誤検知が発生することです。

助言がありますか ?

ありがとう !

psは、年が常に2000を超え、現在の日付よりも小さいため、年に制限があると言う必要があります。

4

4 に答える 4

4

これには、実際の可能な値の解析を簡単にするだけでなく(つまり、13か月目は無効)、うるう年などに備えるために、実際の日付パーサーを使用する必要があります。

通常、お気に入りの言語の日付パーサーは、MMDDYY形式の文字列を解析し、失敗した場合に何らかのフィードバックを提供できる必要があります。

于 2012-07-05T19:24:21.083 に答える
2

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])

うるう年を把握する方法は技術的にはありますが、それは少しやり過ぎです。

于 2012-07-05T19:34:57.457 に答える
1

http://www.regular-expressions.info/dates.html ところで:正規表現だけではうるう年を処理することはできません(理論的には可能ですが、実用的ではありません)。適切な日付パーサーを使用する必要があります。

于 2012-07-05T19:24:07.847 に答える
0

この正規表現を使用します[0-1]\d[0-3]\d[2-9]\d{3} が、現在の日付と対話することはできません

于 2012-07-05T19:22:10.577 に答える