使用vbscript对两个数字进行正则表达式:无效:“$ 123456789012”且有效:“12345678912”

时间:2014-06-03 19:04:55

标签: regex vbscript

我想创建正则表达式以查找包含10位或更多位数的数字,并且该数字前面不应包含$符号。

例如: 无效:$123456789012且有效:12345678912

除此之外,我还有更多验证,例如查找数字模式:3digits - 4digits,3digits - 4digits - 5digits。

但是现在我能为所有那些但无法为$<number>做的人创建模式,请你帮忙。

很抱歉在开头没有提到 - 这是使用vbscript。

代码:

RegularExpressionObject.IgnoreCase = True 
RegularExpressionObject.Global = True 
RegularExpressionObject.Pattern =
    "(([0-9]{3}-[0-9]{4})|([0-9]{3}-[0-9]{4}-[0-9]{5})|([0-9]{3}-[0-9]{4}-[0-9]{5}-[‌​0-9]{6})|([0-9]{10}))"
    'pattern:CCID or 3(digits)-4(digits), 3(digits)-4(digits)-5(digits), 3(digits)-4(digits)-5(digits)-6(digits), 10digts and above number 
Set Matches = RegularExpressionObject.Execute(Rescomts)
    If (Matches.Count <> 0) Then 

在上面的代码中,允许使用正则表达式10位数字,但我想忽略从$符号

开始的10位数字

2 个答案:

答案 0 :(得分:3)

正如@Sam所说,你可能会使用负面的后视:

(?<!\$)\b[0-9]{10,}\b

示例:http://regex101.com/r/vR3iF6

根据所选语言的不同,可能无法使用环视功能。例如,Javascript限制(?<!\$)的使用,因此您可能需要将其编写为

[^$]\b[0-9]{10,}\b

示例:http://regex101.com/r/oH5uE4

某些语言支持\d,这可能会使您的正则表达式看起来更干净。其他人没有,你需要写[0-9]

修改的 根据@ AlanMoore的建议,无关的角色也可能会产生干扰。您可以使用\b[^$]\b而不是仅使用\b来解决此问题:

\b[^$]\b[0-9]{10,}\b

示例:http://regex101.com/r/lL2bN9

这将消除前面的空格,非数字字符等。

答案 1 :(得分:0)

这个正则表达似乎有效:

^[^\$][0-9]{9,}$