我想创建正则表达式以查找包含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位数字,但我想忽略从$
符号
答案 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,}$