当前位置:首页 > JavaScript

js 正则实现金额分割

2026-03-01 22:01:53JavaScript

使用正则表达式实现金额分割

在JavaScript中,可以使用正则表达式对金额进行格式化,常见的需求包括千位分隔符的添加。以下是几种实现方法:

方法一:使用正则表达式添加千位分隔符

function formatMoney(num) {
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}

console.log(formatMoney(123456789)); // 输出: "123,456,789"

解释

  • \B 匹配非单词边界
  • (?=(\d{3})+(?!\d)) 正向先行断言,匹配后面跟着3的倍数数字且后面没有更多数字的位置

方法二:处理带小数点的金额

function formatMoneyWithDecimal(num) {
  return num.toString().replace(/(\d)(?=(\d{3})+(\.\d+)?$)/g, '$1,');
}

console.log(formatMoneyWithDecimal(123456789.12)); // 输出: "123,456,789.12"

方法三:更完整的金额格式化函数

function formatCurrency(num, decimalPlaces = 2) {
  const fixedNum = parseFloat(num).toFixed(decimalPlaces);
  const parts = fixedNum.toString().split('.');
  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  return parts.join('.');
}

console.log(formatCurrency(1234567.891)); // 输出: "1,234,567.89"

方法四:处理负数和零

function formatMoneyComplete(num) {
  const n = Number(num);
  if (isNaN(n)) return '0.00';

  const isNegative = n < 0;
  const absoluteNum = Math.abs(n);
  const formatted = absoluteNum.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');

  return isNegative ? `-${formatted}` : formatted;
}

console.log(formatMoneyComplete(-1234567.891)); // 输出: "-1,234,567.89"
console.log(formatMoneyComplete(0)); // 输出: "0.00"

注意事项

  1. 这些方法都假设输入是数字或可以转换为数字的字符串
  2. 对于国际化需求,可能需要考虑不同地区的千位分隔符(如欧洲部分地区使用点号或空格)
  3. 处理用户输入时应先验证和清理数据
  4. 对于极大或极小的数字,可能需要使用BigInt或其他特殊处理

反向操作:移除千位分隔符

function unformatMoney(str) {
  return parseFloat(str.replace(/,/g, ''));
}

console.log(unformatMoney("1,234,567.89")); // 输出: 1234567.89

这些方法可以根据具体需求进行组合或调整,以满足不同的金额格式化场景。

js 正则实现金额分割

标签: 正则金额
分享给朋友:

相关文章

vue实现输入金额

vue实现输入金额

实现输入金额功能 在Vue中实现金额输入功能需要考虑格式化、校验和交互体验。以下是常见的实现方法: 金额输入框组件 创建一个可复用的金额输入组件,支持自动格式化和校验: <templat…

vue实现输入金额时

vue实现输入金额时

Vue实现输入金额时的常见需求 在Vue中实现金额输入功能时,通常需要考虑以下方面: 金额输入框的基本实现 使用v-model绑定输入值,结合@input事件处理金额格式化: <templa…

jquery正则匹配

jquery正则匹配

jQuery 正则匹配方法 在jQuery中,正则表达式通常与JavaScript原生方法结合使用,因为jQuery本身并未提供专门的正则匹配API。以下是常见的实现方式: 字符串匹配示例 v…

jquery正则验证手机号码

jquery正则验证手机号码

jQuery 正则验证手机号码 使用 jQuery 结合正则表达式验证手机号码是一种常见的前端验证方法。以下是几种实现方式: 基础正则表达式验证 以下正则表达式适用于中国大陆手机号码(11位,以1开…

java如何使用正则

java如何使用正则

使用正则表达式的基本步骤 在Java中使用正则表达式需要依赖java.util.regex包,主要涉及Pattern和Matcher两个类。以下是基本使用方法: 创建正则表达式模式对象 Patte…

vue实现输入金额

vue实现输入金额

Vue 实现金额输入功能 金额输入是常见的表单需求,通常需要处理格式化、校验和用户交互。以下是实现金额输入的几种方法: 方法一:使用 v-model 和计算属性 通过计算属性实现双向绑定和格式化显…