使用regex,我可以检查它是否为小数
^\d*\.?\d*$
但我想控制的是这些数字的总长度。
(^\d*\.?\d*$){1,10}
但我仍无法控制它。
两天后,我的最终solution
(?=^\d*\.?\d*$)^.{1,10}$
答案 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(包括点)。