zhangchaoy 发表于 2011-12-15 13:26:02

如何使用正则表达式验证日期是否有效

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,这一句里应该怎么写呀。是用正则表达式吗,还是使用别的什么函数。谢谢

hsjzfling 发表于 2011-12-15 14:27:08

所有问题都可以在帮助文档中找到答案,建议通读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:你的那段正则也不能精确匹配合法日期。。。

zhangchaoy 发表于 2011-12-15 15:49:20

谢谢呀,我再研究一下

wangyanzhao 发表于 2011-12-18 21:11:46

If iDate < >"{1}{1}{1}" Then
          Msgbox "日期格式不正确"
End If

zylbsplx2008 发表于 2011-12-19 15:45:08

这个正则日期格式不一定是这样的,这样判断日期会出问题……

Lemon_s 发表于 2011-12-20 14:37:59

回复 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]
查看完整版本: 如何使用正则表达式验证日期是否有效