- 在开发公司小程序时,产品提了一个需求,关系银行卡号必须要脱敏(把银行卡号改成****)并且每四位就要有一个空格,一开始我只能想到要么脱敏要么就是直接给四位一个空格,其实正则我不怎么会,哈哈哈。(这是什么离谱的需求???????)于是开始了寻求大佬的帮助。下面上代码↓
// 第一种方法
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"
终于在大佬的帮助下,我成了一个躲藏在大佬背后的男人!每天向大佬学习一点小技巧,加油新生代农民工!
感谢佬提供第一种方法@咸鱼的泥潭;
感谢佬提供第二种方法@南宅
带共同学习@一号民工。