Skip to content

实现银行卡号每隔四位加一个空格, 例如:6222023100014763381 -->6222 0231 0001 4763 381

1. 使用正则表达式

javascript
function formatCardNumber(cardNumber) {
  // 移除非数字字符(如果有的话)
  const cleaned = cardNumber.replace(/\D/g, '');

  // 使用正则表达式在每四位后插入一个空格
  const formatted = cleaned.replace(/(.{4})/g, '$1 ').trim();

  return formatted;
}

// 示例
const cardNumber = '6222023100014763381';
console.log(formatCardNumber(cardNumber)); // 输出: "6222 0231 0001 4763 381"

2. 使用字符串操作

javascript
function formatCardNumber(cardNumber) {
  // 移除非数字字符(如果有的话)
  const cleaned = cardNumber.replace(/\D/g, '');

  let formatted = '';
  for (let i = 0; i < cleaned.length; i += 4) {
    if (i > 0) {
      formatted += ' ';
    }
    formatted += cleaned.substring(i, i + 4);
  }

  return formatted;
}

// 示例
const cardNumber = '6222023100014763381';
console.log(formatCardNumber(cardNumber)); // 输出: "6222 0231 0001 4763 381"

3. 使用 Array 的 reduce 方法

javascript
function formatCardNumber(cardNumber) {
  // 移除非数字字符(如果有的话)
  const cleaned = cardNumber.replace(/\D/g, '');

  return cleaned.split('')
    .reduce((acc, digit, index) => {
      if (index > 0 && index % 4 === 0) {
        acc += ' ';
      }
      return acc + digit;
    }, '');
}

// 示例
const cardNumber = '6222023100014763381';
console.log(formatCardNumber(cardNumber)); // 输出: "6222 0231 0001 4763 381"

题目要点:

  • 正则表达式 方法简洁且易于理解,适用于大多数情况。
  • 字符串操作 方法更直观,对于处理自定义逻辑非常有用。
  • reduce 方法 适合喜欢函数式编程的开发者,处理起来可能更灵活。