前端手机号、身份证号脱敏,中间显示星号*,不改变源数据(js、vue手机号、身份证号脱敏)

本文介绍如何在前端和后端应用中,使用字符串操作技巧如正则表达式对手机号和身份证号进行星号替换,实现数据隐私保护。详细展示了脱敏方法和示例代码,并讨论了常见脱敏手段如slice()、substring()和正则替换。同时提醒了与后端协作的注意事项。
摘要由CSDN通过智能技术生成

【问题】

手机号或者身份证号中间数字用星号代替,不改变源数据。

【方法】

  1. 直接在插值表达式中操作数据:

示例代码如下(身份证号脱敏):

<div>
{{ cardId.replace(/^(.{8})(?:\d+)(.{4})$/, "$1******$2") }}
</div>

示例代码如下(手机号脱敏):

<div>
{{ mobil.replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2") }}
</div>
  1. 在获取到接口数据时,新建一个接口返回值中不存在的变量来接收:

示例代码如下:

// cardIdo即为接收者
<td>{{ data.cardIdo }}</td>
this.httpClient.post( '接口地址' ).subscribe((res: any) => {
  if (res.errno === '0') {
    for (let item of res.data.body) {
    // cardId为后端返回的一个字段,cardIdo为新建,展示cardIdo即可
      item.cardIdo = item.cardId.replace(/(?<=\d{6})\d{9}(?=\d{2})/, '*********');
    }
  }
});

注意:第二种方法,在入参的时候,会把cardIdo一并传给后端,一般后端是不接收的,基本不会出现问题,但还是和后端确认下比较好。

【扩展】

几种常见的脱敏方式:

  1. slice()
let str = '18888888888'
let enStr = str.slice(0,3) + '****' + str.slice(str.length - 4)
console.log(enStr) // 188****8888
  1. substring()
let str = '18888888888'
let enStr = str.substring(0,3) + '****' + str.substring(str.length - 4)
console.log(enStr) // 188****8888
  1. 正则
let str = '18888888888'
// 第一种
let enStr = str.replace(/(\d{3})\d*(\d{4})/,"$1****$2");
// 第二种
let enStr = str.replace(/^(.{8})(?:\d+)(.{4})$/, "$1******$2");
console.log(enStr) // 188****8888

  • 19
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值