关于银行卡号脱敏并且四位一个空格的js使用心得

1,142 阅读1分钟
  1. 在开发公司小程序时,产品提了一个需求,关系银行卡号必须要脱敏(把银行卡号改成****)并且每四位就要有一个空格,一开始我只能想到要么脱敏要么就是直接给四位一个空格,其实正则我不怎么会,哈哈哈。(这是什么离谱的需求???????)于是开始了寻求大佬的帮助。下面上代码↓
    // 第一种方法
    let str = '1234567891234567' || let str = '1234567891234567890'
    let reg = /\d{4}|\d{3}/g  
    // 这里是为了判断最后保留几位,并且让前面的脱敏,可以按照自己公司的需求来重新写正则表达式。如果按照我的复制粘贴,可能产品会喷你,哈哈哈哈。
    let res = str.match(reg)
    let aftermatch = res.map((item,index) => index === res.length -1 ? item : '****').join(' ')
    console.log(aftermatch) // 打印的结果 **** **** **** 4567
    console.log(aftermatch) // 打印的结果 **** **** **** **** 890
   // 第二种方法
   const hideBankCard = (value) => {
  if (value && value.length > 8) {
   // 第二种方法可以根据自己的需求在这个地方修改正则↓。
   return `${value.substring(0, 4)} ${"*".repeat(value.length - 8).replace(/(.{4})/g, `$1 `)}${value.length % 4 ? " " : ""}${value.slice(-4)}`;
  }
  return value;
}
console.log() // 打印的结果 "1234 **** **** 4567"
    // 如果仅仅是只需要给数字每四位加一个空格的话,不需要考虑脱敏的情况下可以这样
    let account = '1234567890123456'
    let newAccount = account.replace(/\s/g, '').replace(/(\w{4})(?=\w)/g, '$1 ')
    console.log(newAccount) // 打印的结果 "1234 5678 9012 3456"

终于在大佬的帮助下,我成了一个躲藏在大佬背后的男人!每天向大佬学习一点小技巧,加油新生代农民工!

感谢佬提供第一种方法@咸鱼的泥潭

感谢佬提供第二种方法@南宅

带共同学习@一号民工