Skip to content

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

Posted on:2024年8月14日 at 14:14

1. 使用正则表达式

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. 使用字符串操作

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 方法

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"
原文转自:https://fe.ecool.fun/topic/a2036088-aba0-48f4-b81b-b2bc0c632efc