验证字符串vbscript

时间:2016-05-12 14:11:06

标签: vbscript hp-uft

我正在尝试搜索字符串,以确保它不包含数字,后跟逗号后跟数字并包含一个点和2个小数位,例如32,000.00。目前,我让它搜索字符串是否只包含一个点。我如何搜索上述标准?

Root_RefundAmount = Root_TaxDataSummary.SlvObject("RefundAmount").GetROProperty("text") 
refund = InStr(1,Root_RefundAmount,".")
If refund > 0 Then          
    pass
Else
   fail
End If

1 个答案:

答案 0 :(得分:3)

我相信简单的正则表达式测试会为您提供您想要的东西:

Dim objRegEx, strValue

'Create Regular Expression object to parse the file
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True
objRegEx.MultiLine = True
objRegEx.Pattern = "\d+\,\d+\.\d{2}"

strValue = "e.g. 32,000.00."
MsgBox objRegEx.test(strValue)  '<- True

strValue = "e.g. 3200000."
MsgBox objRegEx.test(strValue)  '<- False

以上将导致布尔响应(True / False)。 使其适应您的日常工作......

Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.Global = True
objRegEx.MultiLine = True
objRegEx.Pattern = "\d+\,\d+\.\d{2}"

Root_RefundAmount = Root_TaxDataSummary.SlvObject("RefundAmount").GetROProperty("text") 
If Not objRegEx.test(Root_RefundAmount) Then          
    'Pattern NOT Found
Else
    'Pattern IS Found
End If

解释模式:

"\d+\,\d+\.\d{2}"

\ d =任意数字0到9 ......

“一个数字后跟一个逗号后跟数字并包含一个点和2个小数位”{假设你的意思是2个数字} ...根据你的输入,上面的内容更容易看,但它也会匹配数字例如12345,12345.99,可能是也可能不是。

如果您需要精确,那么您可能需要考虑以下正则表达式:

"\d{1,3}(?:\,\d{3})*\.\d{2}"

这将匹配典型数字格式的数字0.00到999,999,999.99等...

如果您想专门查找1,000以上的数字(使用逗号),请将星号'*'更改为加号'+',表示需要一个或多个......

"\d{1,3}(?:\,\d{3})+\.\d{2}"

或者更具体的正则表达式:

(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2})(?:\,[0-9]{3})+\.[0-9]{2}
'OR
(?:[1-9]|[1-9]\d|[1-9]\d{2})(?:\,\d{3})+\.\d{2}

有关正则表达式和'\ d'角色类的更多信息,请查看以下链接:

http://www.regular-expressions.info/shorthand.html

https://msdn.microsoft.com/en-us/library/20bw873z(v=vs.110).aspx#Anchor_9