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

输入框数字格式化添加千位分隔符时如何保留负号不丢失

问题原因

你原有代码中的首个正则替换规则replace(/\D/g, "")会匹配并清除所有非数字字符,负号-属于非数字字符范畴,因此输入负数时负号会被直接移除。

调整方案

你可以先单独提取开头位置的有效负号,再对纯数字部分做千位分隔处理,最后拼接负号即可,调整后的代码如下:

$(this).val(function(index, value) {
    // 仅保留开头位置的负号作为符号位
    const sign = value.trim().startsWith('-') ? '-' : '';
    // 提取所有数字字符
    const numPart = value.replace(/\D/g, '');
    // 拼接符号位和加了千位分隔的数字部分
    return sign + numPart.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
});

说明

  • 仅会保留输入内容开头的负号,输入在数字中间的负号会被自动清除,避免出现12-345这类非法格式
  • 原有正数的千位分隔逻辑完全不变,不会影响原有正常输入的展示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:45:05