51Testing软件测试论坛

标题: 帮忙看看正则表达式出了什么问题 [打印本页]

作者: zhangchaoy    时间: 2011-12-27 14:41
标题: 帮忙看看正则表达式出了什么问题
本帖最后由 zhangchaoy 于 2011-12-27 14:43 编辑

Window("Flight Reservation").Dialog("Text:=Fax Order No\. \d+").ActiveX("Attached Text:=Fax Number:").Type "0102345678"
FaxNo = Window("Flight Reservation").Dialog("Text:=Fax Order No\. \d+").ActiveX("Attached Text:=Fax Number:").GetROProperty("Text")
Msgbox FaxNo
If FaxNo = "\(\d{3}\)\d{3}-\d{4}" Then

Msgbox "格式正确"
Else

Msgbox "格式错误"
End If
每次的消息框都是格式错误,我也不太清楚哪有问题。
If FaxNo = "(\d{3})\d{3}-\d{4}" Then, 把"\"去了也不行。请大侠指教呀。
作者: hsjzfling    时间: 2011-12-27 15:23
"(010)234-5678"当然不等于 "\(\d{3}\)\d{3}-\d{4}"
用正则之前先弄清楚哪些地方哪些场景可以使用正则,帮助文档中查询Regular Expression和RegExp可以获取更多详情
作者: zhangchaoy    时间: 2011-12-27 16:57
本帖最后由 zhangchaoy 于 2011-12-27 17:09 编辑

如果不用正则,请问这个应该如何判断呀。这个程序没有特别严格的限制,例如(010)-+8-9++-也是可以接受的。我想判断一下,要是有非数字的就报错。帮忙看看。
作者: hsjzfling    时间: 2011-12-27 17:08
一种么就是截取字符串来判断,另一种么就是如我之前的回复,查帮助,里面都有
作者: zhangchaoy    时间: 2011-12-27 17:10
本帖最后由 zhangchaoy 于 2011-12-28 11:43 编辑

我把代码改了一下,还是显示格式错误。哪位帮我看看。Window("Flight Reservation").Dialog("Text:=Fax Order No\. \d+").ActiveX("Attached Text:=Fax Number:").Type "0102345678"
FaxNo = Window("Flight Reservation").Dialog("Text:=Fax Order No\. \d+").ActiveX("Text:=Fax Number:").GetROProperty("Text")
Set re = New RegExp
re.pattern = "\([0-9]{3}\)[0-9]{3}-[0-9]{4}"
re.Global = true
re.Ignorecase = true
If re.test(FaxNo) Then

Msgbox "格式正确"
Else

msgbox "格式错误"
End If
作者: wangyanzhao    时间: 2011-12-28 13:28
回复 6# zhangchaoy


re.pattern = "\([0-9]{3}\)[0-9]{3}-[0-9]{4}"
你把这个换成下面的试试:

re.pattern = "([0-9]{3})[0-9]{3}-[0-9]{4}"
作者: Shawn_xiao    时间: 2011-12-29 17:57
判断特定位置的字符就行了吧
作者: lifr    时间: 2012-1-11 09:31
试试下面的函数

  1. ' judge if the src matches ptn.
  2. '
  3. ' @ptn can be RegExp instance or, a string
  4. ' @return true or false
  5. Function isMatch(src, ptn)
  6.     Set regEx = Nothing
  7.     If typename(ptn) <> "IRegExp2" Then
  8.         Set regEx = New RegExp   
  9.         regEx.Pattern = ptn
  10.         regEx.IgnoreCase = False
  11.         regEx.Global = True
  12.     Else
  13.         Set regEx = ptn
  14.     End If

  15.     Set Matches = regEx.Execute(src)

  16.     isMatch = False
  17.     if Matches.count > 0 Then
  18.         isMatch = True
  19.     End If
  20. End Function
复制代码





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2