51Testing软件测试论坛

标题: QTP中郁闷的一则正则表达式 [打印本页]

作者: marysnow    时间: 2009-1-8 19:20
标题: QTP中郁闷的一则正则表达式
今天,遇到一个很意思的问题,关于正则表达式在QTP的用法:

环境TP8.2
被测对象:是QTP自带的单机版的例子,详见下图
[attach]48473[/attach]

对此对象设置了一个标准检查点,则检查点的值设成正则表达式,如图所示:
[attach]48474[/attach]

内容0[1-9])|(1[0-2])/(0[1-9])|([1-2][0-9])|(3[0-1])/09
匹配:01/10/09(即月/日/年)这样的格式的字符串
QTP结果:检查点失败.

如果改成这样的话,如下图,就可以检查通过.
[attach]48475[/attach]

请教:使用QTP的同行,这是为什么?按照正则表达式的用法,也没有写错啊.
作者: plumlau002    时间: 2009-1-8 23:29
你用((0[1-9])|(1[0-2]))/((0[1-9])|([1-2][0-9])|(3[0-1]))/09 试试, 我用()把月份和日期括起来了
作者: marysnow    时间: 2009-1-9 16:48
谢谢,可以了,原来还要再加一层括号.
作者: 没有蛀牙    时间: 2009-1-9 17:47
在使用或的时候,要注意边界
(0[1-9])|(1[0-2])/(0[1-9])|([1-2][0-9])|(3[0-1])/09
这个表达式是这样的
0[1-9]或者1[0-2]/0[1-9]或者[1-2][0-9]或者3[0-1]/09
匹配结果是01和10/09,要匹配01/10/09显然是错误的
更简洁的表达式是:
(0[1-9]|1[0-2])/(0[1-9]|[1-2][0-9]|3[0-1])/09




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