正規表現を使用する必要はありません。代わりにDateTime.TryParse
orを使用してください。DateTime.TryParseExact
通常のTryParse
方法を使用することをお勧めします。これにより、訪問者のフォーマットに柔軟性がもたらされるからです (たとえば、24 時間制を使用したい訪問者もいれば、12 時間制を使用したい訪問者もいます)。
String input;
DateTime dt;
if( !DateTime.TryParse( input, CultureInfo.InvariantCulture /* change if appropriate */, DateTimeStyles.None, out dt ) ) {
// show error message
}
バリデーターを使用しているので、このロジックをサブクラスにラップする必要がありますValidator
が、それは非常に簡単です。
public class DateTimeValidator : BaseValidator {
protected override bool EvaluateIsValid() {
String controlValidationValue = base.GetControlValidationValue(base.ControlToValidate);
if( String.IsNullOrEmpty( controlValidationValue ) ) return true;
DateTime dt;
return DateTime.TryParse( input, CultureInfo.InvariantCulture /* change if appropriate */, DateTimeStyles.None, out dt );
}
}
次に ( にタグ プレフィックスを登録したと仮定してweb.config
) 行う必要があるのは次のとおりです。
<label>
Enter a valid date/time value.
<input type="text" runat="server" id="someDate" />
<myprefix:DateTimeValidator runat="server" controlToValidate="someDate" />
</label>
<asp:RequiredFieldValidator>
フィールドを必須にしたい場合は、別途必要になります。