2016-05-12 96 views
0

我试图搜索一个字符串,以确保它不包含数字后跟一个逗号,后跟数字并包含一个点和2个小数位,例如, 32,000.00。目前,我已经搜索了解该字符串是否只包含一个点。我如何去搜索上面的标准?验证字符串vbscript

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

使用一个正则表达式。 – Lankymart

回答

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 

以上将导致布尔响应(真/假)。 它适应你的习惯...

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 =〜9的任何数0 ...

“一个号码跟一个逗号后面是数字,包含一个小数点和2个小数位“{假设您的意思是2个数字} ...根据您的输入,上述内容更容易查看,但它也会匹配12345,12345.99等数字,这些数字可能会也可能不会是可取的。

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

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

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

如果你想具体来看对数在1000以上(用逗号分隔),然后换星“*”为加“+”是指一个或多个需要...

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

或者一个甚至多个S pecific正则表达式:

(?:[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

+0

那个正则表达式不会匹配'32,000.00'。见[Demo](https://www.debuggex.com/r/dMWcM2UCr47Z2Mq4) – Lankymart

+0

我能得到的最近的正则表达式是'^ [0-9] {1,3} \,(?:\,?[0-9 ] {3})*(?:\。[0-9] {2})?$',即使这样也不对。 – Lankymart

+0

@Lankymart从技术上讲,我的正则表达式会匹配'2,000.00'部分。我在\ d字符类中添加了一个'+'来匹配所有的字符。从我从OP的问题中收集到的信息,他们只是希望确保某个格式中的数字不存在于某个值中。我有没有想念这个问题? –