51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2000|回复: 5
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 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 < >"[0-9][0-9]/[0-9][0-9]/[0-9][0-9]" Then
        Msgbox "日期格式不正确"
End If
End With

比如输入的日期不是数字,我要判断一下输入日期是否为数字的话,
If iDate < >"[0-9][0-9]/[0-9][0-9]/[0-9][0-9]" Then,这一句里应该怎么写呀。是用正则表达式吗,还是使用别的什么函数。谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 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:你的那段正则也不能精确匹配合法日期。。。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-12-15 15:49:20 | 只看该作者
谢谢呀,我再研究一下
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2011-12-18 21:11:46 | 只看该作者
If iDate < >"[1-12]{1}[1-31]{1}[2011-2296]{1}" Then
          Msgbox "日期格式不正确"
End If
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2011-12-19 15:45:08 | 只看该作者
这个正则日期格式不一定是这样的,这样判断日期会出问题……
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 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("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|1[0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579[26]))|((0[48]|[2468][048]|[13579][26])00)-02-29)$",iDate)) Then
        msgbox "日期格式正确"
        else
        msgbox "日期格式不正确"
End If
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 07:58 , Processed in 0.070326 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表