5

日付が月の最初の28日である場合にのみ一致する正規表現を探しています。これは、ASP.NETでのバリデーターコントロール用です

4

5 に答える 5

18

これを正規表現で行わないでください。日付の形式は国によって異なります。代わりに DateTime.TryParse ルーチンを使用します。

DateTime parsedDate;

if ( DateTime.TryParse( dateString, out parsedDate) && parsedDate.Day <= 28 )
{
 // logic goes here.
}

正規表現は、入力検証のゴールデン ハンマーに近いものですが、この場合は間違った選択です。

于 2008-09-08T15:26:56.147 に答える
2

これは正規表現に非常に適したタスクではないと思います。

ライブラリ関数(DateTime.Parse for .NET)を使用して日付を解析し、その日付コンポーネントを確認してみます。他のすべてはとにかくライブラリ関数の半分を複製しています。

于 2008-09-08T15:19:08.617 に答える
1

日付データ型に変換して日を確認してみませんか?正規表現を使用すると、それは可能ですが、非常に複雑になります。

于 2008-09-08T15:19:29.363 に答える
1
  ([1-9]|1\d|2[0-8]) // matches 1 to 28 but woudn't allow leading zeros for single digits
(0?[1-9]|1\d|2[0-8]) // matches 1 to 28 and would allow 01, 02,... 09

(\d は任意の数字に一致します。正規表現エンジンがサポートしていない場合は [0-9] を使用してください。)

質問も参照してくださいdatetime (2008-09-01 12:35:45 ) の正規表現パターンは何ですか?

于 2008-09-08T15:31:14.560 に答える
1

CustomValidatorと組み合わせて DateTime.TryParse 手法の 1 つを使用します。

于 2008-09-08T15:57:11.193 に答える