文章目录

    • 脱敏公用
    • 中文姓名脱敏
    • 证件脱敏
    • 卡(社保卡,医保卡)脱敏
    • 手机号脱敏
    • 固定电话
    • 邮箱脱敏
    • 地址脱敏
    • 昵称脱敏
    • 车辆信息脱敏
    • 支付宝、微信号、QQ号脱敏
    • 完整方法

脱敏公用

class JSSDK {/*** 脱敏公用* @param str 脱敏字符串* @param begin 起始保留长度,从0开始* @param end 结束保留长度,到str.length结束* @returns {string}*/static desensitizedCommon (str, begin, end) {if (!str && (begin + end) >= str.length) {return "";}let leftStr = str.substring(0, begin);let rightStr = str.substring(str.length - end, str.length);let strCon = ''for (let i = 0; i < str.length - end - begin; i++) {strCon += '*';}return leftStr + strCon + rightStr;}}

中文姓名脱敏

        name: name => {// 两个字的姓名,隐藏第一个字if (name.length === 2) {return name.replace(/^./, '*')}// 三个字的姓名,隐藏第一个字else if (name.length === 3) {return name.replace(/^./, '*')}// 六个字以下,三个字以上,只显示最后两个字else if (name.length <= 6 && name.length >= 3) {return name.replace(name.substr(0, name.length - 2), '***')}// 六个字以上,只显示第一个字和最后一个字else if (name.length > 6) {return name.replace(/^(.).*(.)$/, '$1*****$2')}}

证件脱敏

IdNumber: IdNumber => {// 身份证号if (IdNumber.length === 18) {return IdNumber.replace(/^(.).*(.)$/, '$1***********$2')}// 军官证号else if (IdNumber.length === 10) {return IdNumber.replace(/^(.).*(.)$/, '$1********$2')}// 护照号else if (IdNumber.length === 9) {return IdNumber.replace(/^(.).*(.)$/, '$1********$2')}}

卡(社保卡,医保卡)脱敏

        // 显示前1/3,后1/3,其他用*代替,内容长度不能被三整除时,显示length/3+1和length/3card: card => {if (card.length % 3 === 0) {return card.replace(/^(.).*(.)$/, '$1$1$1$1*****$2$2$2')} else {return card.replace(/^(.).*(.)$/, '$1$1$1******$2$2$2')}},

手机号脱敏

        phone: phone => {// 大陆:前三位,后两位,其他用*代替if (phone.length === 11) {return phone.substring(0, 3) + '****' + phone.substring(7, 11)}// 香港,澳门:前2位,后2位,其他用*代替else if (phone.length === 8) {return phone.substring(0, 2) + '****' + phone.substring(6, 8)}// 台湾:前2位,后3位,其他用*代替else if (phone.length === 9) {return phone.substring(0, 2) + '****' + phone.substring(6, 9)}// 其他海外地区:前3位,后4位,其他用*代替else {return phone.substring(0, 3) + '****' + phone.substring(8, 11)}}

固定电话

iphone: iphone => {return iphone.substring(0, 3) + '****' + iphone.substring(6, 11)}

邮箱脱敏

        email: email => {return email.substr(0, 3) + '****' + email.substr(email.indexOf('@'))},

地址脱敏

 address: address => {return address.substr(0, address.indexOf('区') + 1) + '****'}

昵称脱敏

nickname: nickname => {return nickname.replace(/^(.).*(.)$/, '$1*****$2')}

车辆信息脱敏

  carNumber: carNumber => {return carNumber.replace(/^(.).*(.)$/, '$1*****$2')}

支付宝、微信号、QQ号脱敏

   alipay: alipay => {return alipay.replace(/.(?=.{4})/g, '*')}

完整方法

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><script>// 封装脱敏函数const tools = {// 中文姓名脱敏name: name => {// 两个字的姓名,隐藏第一个字if (name.length === 2) {return name.replace(/^./, '*')}// 三个字的姓名,隐藏第一个字else if (name.length === 3) {return name.replace(/^./, '*')}// 六个字以下,三个字以上,只显示最后两个字else if (name.length <= 6 && name.length >= 3) {return name.replace(name.substr(0, name.length - 2), '***')}// 六个字以上,只显示第一个字和最后一个字else if (name.length > 6) {return name.replace(/^(.).*(.)$/, '$1*****$2')}},// 证件脱敏:身份证、军官证号、护照号、IdNumber: IdNumber => {// 身份证号if (IdNumber.length === 18) {return IdNumber.replace(/^(.).*(.)$/, '$1***********$2')}// 军官证号else if (IdNumber.length === 10) {return IdNumber.replace(/^(.).*(.)$/, '$1********$2')}// 护照号else if (IdNumber.length === 9) {return IdNumber.replace(/^(.).*(.)$/, '$1********$2')}},// 卡(社保卡,医保卡)脱敏// 显示前1/3,后1/3,其他用*代替,内容长度不能被三整除时,显示length/3+1和length/3card: card => {if (card.length % 3 === 0) {return card.replace(/^(.).*(.)$/, '$1$1$1$1*****$2$2$2')} else {return card.replace(/^(.).*(.)$/, '$1$1$1******$2$2$2')}},// 手机号脱敏phone: phone => {// 大陆:前三位,后两位,其他用*代替if (phone.length === 11) {return phone.substring(0, 3) + '****' + phone.substring(7, 11)}// 香港,澳门:前2位,后2位,其他用*代替else if (phone.length === 8) {return phone.substring(0, 2) + '****' + phone.substring(6, 8)}// 台湾:前2位,后3位,其他用*代替else if (phone.length === 9) {return phone.substring(0, 2) + '****' + phone.substring(6, 9)}// 其他海外地区:前3位,后4位,其他用*代替else {return phone.substring(0, 3) + '****' + phone.substring(8, 11)}},// 固定电话,显示区号和后四位,其他用*代替iphone: iphone => {return iphone.substring(0, 3) + '****' + iphone.substring(6, 11)},// 邮箱脱敏,@前面显示第3位,3位后显示3个*,@后面完整显示。如:148***@163.comemail: email => {return email.substr(0, 3) + '****' + email.substr(email.indexOf('@'))},// 地址脱敏,区县后面的用*代替,如:湖北省武汉市武昌区****address: address => {return address.substr(0, address.indexOf('区') + 1) + '****'},// 昵称脱敏,显示首字母和最后一个字母,其他用*代替,如:张***疯nickname: nickname => {return nickname.replace(/^(.).*(.)$/, '$1*****$2')},// 车辆信息脱敏,车牌号前面的前两位,后面的后两位,其他用*代替,如:粤****7carNumber: carNumber => {return carNumber.replace(/^(.).*(.)$/, '$1*****$2')},// 支付宝、微信号、QQ号脱敏,只展示后四位,如:*******1234alipay: alipay => {return alipay.replace(/.(?=.{4})/g, '*')}}// 使用姓名脱敏函数,例如:张三疯,张鹏,张鹏的姓名,张鹏的姓名的姓名console.log(tools.name('张三疯')) // *三疯console.log(tools.name('张鹏')) // *鹏console.log(tools.name('张鹏的姓名')) // ***姓名console.log(tools.name('张鹏的姓名的姓名')) //张*****名// 使用证件脱敏函数,例如:身份证号,军官证号,护照号// 身份证号console.log(tools.IdNumber('622422000080888889')) // 6***********9// 军官证号console.log(tools.IdNumber('3208888888')) // 3********8// 护照号console.log(tools.IdNumber('P12345678')) // P*********8// 使用卡脱敏函数,例如:社保卡,医保卡// 社保卡console.log(tools.card('1234567890123456789')) // 1234567890123456789// 医保卡console.log(tools.card('123456789012345678')) // 123456789012345678// 使用手机号脱敏函数,例如:大陆手机号// 大陆手机号console.log(tools.phone((phoneStr = '13000000000'))) // 130****0000// 香港手机号console.log(tools.phone((phoneStr = '12345678'))) // 12****78// 台湾手机号console.log(tools.phone((phoneStr = '123456789'))) // 12****789// 固定电话,显示区号和后四位,其他用*代替console.log(tools.iphone('010-1234567')) // 010****4567// 使用邮箱脱敏函数,例如:1482516333@qq.comconsole.log(tools.email('1482516333@qq.com')) //148****@qq.com// 使用地址脱敏函数,例如:湖北省武汉市武昌区68号路301console.log(tools.address('湖北省武汉市武昌区68号路301')) //湖北省武汉市武昌区****// 使用昵称脱敏函数,例如:人情淡薄纸一张console.log(tools.nickname('人情淡薄纸一张')) // 人*****张// 使用车辆信息脱敏函数,例如:粤B12345console.log(tools.carNumber('粤B12345')) // 粤B****5// 使用支付宝脱敏函数,例如:console.log(tools.alipay('18852638000')) // *******8000</script></body>
</html>