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

如何用正则表达式处理金额字符串:保留负号并移除非小数部分

解决金额字符串保留负号并移除非小数部分的问题

原代码的问题在于正则表达式未包含负号,导致负号被误删;同时千位分隔符这类无关字符也需要被移除,只需调整正则即可一次性处理所有场景:

修正后的代码

// 处理负金额
String value1 = "-$54.34";
value1 = value1.replaceAll("[^-\\d.]", "");
// 输出结果:"-54.34"

// 处理带千位分隔符的正金额
String value2 = "$4,230.33";
value2 = value2.replaceAll("[^-\\d.]", "");
// 输出结果:"4230.33"

正则说明

[^-\\d.] 是一个否定字符集,含义为匹配所有不是负号(-)、数字(\d)、小数点(.)的字符,并将这些字符替换为空:

  • 保留开头的负号,满足负金额的需求
  • 自动移除货币符号($、¥等)、千位分隔符(,)等无关字符
  • 保留数字和小数点,确保小数部分的完整性

特殊情况处理(可选)

如果字符串中存在多个负号(比如中间夹杂负号),可以先提取所有数字和小数点,再根据原字符串是否包含负号决定是否添加开头负号:

String originalValue = "54-$34";
String digitsOnly = originalValue.replaceAll("[^\\d.]", "");
String finalValue = originalValue.contains("-") ? "-" + digitsOnly : digitsOnly;
// 输出结果:"-5434"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:12:50