我有这个 REGEX 几乎完美...它似乎可以处理所有除了以负号和小数开头的数字。所以如果我输入:
-.2
我得到一个错误 -
这是我的正则表达式——我测试过的其他一切都完美无缺...
^(\+|-)?[0-9]{1,11}?(?:\.[0-9]{1,4})?$
这允许:
- 最多 11 位数字(990 亿)
- 正数或负数
- 最多 4 位小数(可选)
- 小数点前的前导 0 是可选的 - 仅适用于正数
这些都有效:
-0.2345
-10
12
.125
0.1245
5.555
25000000000 (aka 25 Billion)
25000000000.25
这些不起作用:
-.2
-.421
最佳答案
正则表达式可能很昂贵...为什么不使用 Decimal.Parse 或 Float.parse?
您当前的实现永远不会使用替代数字样式,例如 European where 。 (点) 和 , (逗号) 互换...而 Decimal.Parse 将:
string stringValue = "45.889,33";
CultureInfo currentCulture = Thread.CurrentCulture; //set this way up in the execution chain
decimal thenumber = Decimal.Parse(stringValue, currentCulture);
//thenumber = 45889.33 in us-en display format.
数值解析不是正则表达式的良好应用,IMO。
关于c# - 正则表达式几乎完美的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350562/