检查小数和数字的总长度

时间:2015-05-26 07:38:48

标签: c# regex

使用regex,我可以检查它是否为小数

^\d*\.?\d*$

但我想控制的是这些数字的总长度。

(^\d*\.?\d*$){1,10}

但我仍无法控制它。

两天后,我的最终solution

(?=^\d*\.?\d*$)^.{1,10}$

Regular expression visualization

Debuggex Demo

2 个答案:

答案 0 :(得分:5)

这是一个解决方案:

^(?!.{10})\d*\.?\d*$

这将检查整数不超过10个字符。

如果你想检查整数不超过10个位数(不计算点数),你可以使用

^((?!.{11})\d*\.\d*|(?!.{10})\d*)$

答案 1 :(得分:2)

(^\d*\.?\d*$){1,10}
    ↑     ↑

*表示零或更多。所以你的正则表达式意味着“零次或多次,从1到10次”,所以在这种情况下{1,10}是多余的。您需要删除*或仅将{1,10}应用于没有它的部分。

例如,您可以将正则表达式更改为:

^\d*(\.?\d{0,10})$

匹配点后最多10位数的数字。如果你想匹配一个总共有10位数的浮点数,你可以使用负向前瞻(正如@DenysSéguret在他的答案+1中已经提到的那样):

(?!.{10})\d*\.?\d*

仅当\d*\.?\d*$的长度<1时才匹配{{1}}。 10(包括点)。