-1

我正在使用下面的正则表达式,它在日期验证的情况下可以正常工作。但是,即使我从 DatePicket 中选择日期,它也会引发警报:输入有效日期。如何修改正则表达式以与 DatePicker 兼容。

Set RegularExpressionObject = New RegExp

With RegularExpressionObject 
    .Pattern = "^(((0?[1-9]|[12]\d|3[01]).-\/.-\/?\d{2}))|((0?[1-9]|[12]\d|30).-\/.-\/?\d{2}))|((0?[1-9]|1\d|2[0-8])[.-\/]0?2.-\/?\d{2}))|(29[.-\/]0?2.-\/?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))$" 
    .IgnoreCase = True 
    .Global = True 
End With 
expressionmatch = RegularExpressionObject.Test(TxtVal)

If expressionmatch Then

Else 
    msgbox "You must enter a valid Date.",,"Invalidentry" 
    form1.item(OHldr).focus()
    Exit Function 
End if
4

2 回答 2

0

我知道这不是您要问的,但有一种更简单的方法来验证日期时间。正则表达式很好,但有时有更简单的方法。

使用 CustomeValidator,并在 Server_Validate 事件中执行以下操作:

bool IsValidDate = false;
if(System.DateTime.TryParse(SomeValue))
{
   IsValidDate = true;
}

return IsValidDate;
于 2009-11-11T21:14:35.887 回答
0

您可以使用If Date.TryParse(s, d) Then ...where s 是字符串,d 是日期。date.tryparse 对于有效日期返回 true,对于无效日期返回 false。如果日期有效,则将其转换为 d 中的日期数据类型。

于 2009-11-12T03:29:48.813 回答