c# - 正则表达式几乎完美的数值

标签 c# regex

我有这个 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/

相关文章:

c# - 使用来自 .NET 应用程序的模板生成 HTML

c# - Linq to SQL 选择多列

c# - 在其图形中附加一个包含现有实体和新实体的实体(Entity Framework Core 1.1.0)

c# - 匹配返回空字符串

c# - PDF 将零件编号转换为链接

c# - VSO API Work Item PATCH 给出 400 Bad Request

regex - 正则表达式帮助 - 逗号分隔字符串

php - preg_match_all - 从模板中提取键/值

javascript - 正则表达式匹配最后一对括号中的内容

正则表达式 - 如果匹配项前面有特定字符,则排除匹配项