发票上的金额总是逗号后的两个小数点. 小数点可以是逗号或点. 数字可以包含作为千位分隔符的单个空格. 或者,它们的数字可以以-sign开头.

示例:

Subtotal,    1 000.00 EUR
VAT    1000,00
Total, sum:    _343 444.45 EUR

结果应该是

1 000.00
1000,00
343 444.45

这就是C#.NET RexExp模式. 有很多类似的问题,但并没有发现非常相似的问题. 使用.NET 7 ASP.NET MVC.

Regex valid numbers with thousand separator分中的答案假设每个数字都在一条直线上.

推荐答案

-?[0-9]{1,3}(?: ?[0-9]{3})*[.,][0-9]{2}

解释:

  • -?-可选-标志,
  • [0-9]{1,3}-一到三位数.第一个千位分隔符之前的数字块,
  • (?: ?[0-9]{3})*-可选的空格和三位数块重复任意次数,
  • [.,]点或逗号:小数点分隔符,
  • [0-9]{2}-两位数字:小数部分.

演示here.

Csharp相关问答推荐

我应该将新的httpReportMessage()包装在using声明中吗?

System.Data.SQLite:判断SQLite数据库是否为空(任何表中至少有一行)

为什么我不能更改尚未设置的模拟对象属性的值?

获取ASP.NET核心身份认证cookie名称

限制特定REST API不被访问,但部署代码

Int和uint相乘得到LONG?

将轮询与超时同步

System.Net.Http.HttpClient.SendAsync(request)在docker容器内的POST方法30秒后停止

更改执行目录

在C#中,是否有与变量DISARD对应的C++类似功能?

当try 测试具有协变返回类型的抽象属性时,类似功能引发System.ArgumentException

如何强制新设置在Unity中工作?

是否可以从IQueryable T中获取一个IdentyEntry T>

RCL在毛伊岛应用程序和Blazor服务器应用程序.Net 8.0中使用页面

我应该为C#12中的主构造函数参数创建私有属性吗?

C#中COM对象的实际地址

仅在Blazor Web App中覆盖生产的基本路径(.NET8中的_Hosts.cshtml文件功能?)

使用本地公共PEM文件加密字符串,使用Azure KayVault中的私钥解密

读取测试项目中的应用程序设置

根据运行时值获取泛型类型的字典