如何使用正则表达式验证日期是否有效
With Window("Flight Reservation").ActiveX("Attached Text:=Date of Flight:", "Index:=0").Type DataTable ("Date_of_Flight", "Action1")
iDate = .ActiveX("Attached Text:=Date of Flight:", "index:=0").GetROProperty("Text")
Msgbox iDate
If iDate < >"//" Then
Msgbox "日期格式不正确"
End If
End With
比如输入的日期不是数字,我要判断一下输入日期是否为数字的话,
If iDate < >"//" Then,这一句里应该怎么写呀。是用正则表达式吗,还是使用别的什么函数。谢谢 所有问题都可以在帮助文档中找到答案,建议通读2遍QTP自带的help
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' Create variable.
Set regEx = New RegExp ' Create regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
Set Matches = regEx.Execute(strng) ' Execute search.
For Each Match in Matches ' Iterate Matches collection.
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
这是帮助中提供的代码,稍微修改下就能符合你的要求了
PS:你的那段正则也不能精确匹配合法日期。。。 谢谢呀,我再研究一下 If iDate < >"{1}{1}{1}" Then
Msgbox "日期格式不正确"
End If 这个正则日期格式不一定是这样的,这样判断日期会出问题…… 回复 1# zhangchaoy
Function RegExpfind(p,s)
Dim regEx
Set regEx=new RegExp
regEx.Pattern=p
regEx.IgnoreCase=True
regEx.Global=True
regExpfind=regEx.Test(s)
End Function
If (RegExpfind("^(({3}|{2}{1}|{1}{2}|{3})-(((0|1)-(0||3))|((0|11)-(0||30))|(02-(0|1|2))))|((({2})(0||))|((0||)00)-02-29)$",iDate)) Then
msgbox "日期格式正确"
else
msgbox "日期格式不正确"
End If
页:
[1]