日付が月の最初の28日である場合にのみ一致する正規表現を探しています。これは、ASP.NETでのバリデーターコントロール用です
1143 次
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] を使用してください。)
于 2008-09-08T15:31:14.560 に答える
1
CustomValidatorと組み合わせて DateTime.TryParse 手法の 1 つを使用します。
于 2008-09-08T15:57:11.193 に答える