DatetimePicker: недопустимый Reg Exp - PullRequest
0 голосов
/ 12 ноября 2009

Я использую приведенное ниже регулярное выражение, которое отлично работает в случае проверки даты. Но если я выберу дату из 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

Ответы [ 2 ]

0 голосов
/ 12 ноября 2009

Вы можете использовать If Date.TryParse(s, d) Then ..., где s - строка, а d - дата. date.tryparse возвращает true для действительной даты и false для неверной даты. Если дата действительна, она преобразует ее в тип данных даты в d.

0 голосов
/ 12 ноября 2009

Я знаю, что это не то, что вы спрашиваете, но есть более простой способ проверить дату и время. Регулярные выражения хороши, но иногда есть более простой способ.

Используйте CustomeValidator и в событии Server_Validate выполните следующие действия:

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

return IsValidDate;
...