You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求适用于.NET 7的发票金额正则表达式(含千分位与可选负号)

提取发票金额的C#正则表达式方案

针对你需要提取的发票金额格式(保留两位小数,小数点支持逗号/点号,千分位用单个空格分隔,可带负号),这里给出适配.NET 7的正则表达式:

Regex regex = new Regex(@"-?\d+(?: \d{3})*(?:[.,]\d{2})", RegexOptions.Compiled);

正则结构说明

  • -?:匹配可选的负号,支持负数金额
  • \d+:匹配金额整数部分的开头数字,至少一位
  • (?: \d{3})*:匹配零次或多次“空格+三位数字”的千分位分隔格式,用非捕获组(?:...)避免生成多余的捕获结果
  • (?:[.,]\d{2}):匹配小数点(逗号或点号)加固定两位小数的结构,同样使用非捕获组

使用示例

以下是在ASP.NET MVC项目中提取金额的代码示例:

string invoiceText = @"Subtotal,    1 000.00 EUR
VAT    1000,00
Total, sum:    -343 444.45 EUR";

var regex = new Regex(@"-?\d+(?: \d{3})*(?:[.,]\d{2})", RegexOptions.Compiled);
var matches = regex.Matches(invoiceText);

// 遍历所有匹配到的金额
foreach (Match match in matches)
{
    string amount = match.Value;
    // 后续处理逻辑,比如存入数据库或展示
}

运行后会提取到以下结果:

1 000.00
1000,00
-343 444.45

这个正则会全局扫描输入文本,无需限制每行仅含一个金额,完全满足你的需求。

内容的提问来源于stack exchange,提问作者Andrus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:03:12