我正在尝试搜索字符串,以确保它不包含数字,后跟逗号后跟数字并包含一个点和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
答案 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