身份证号脱敏处理

365 阅读1分钟

需求: 只显示身份证号的前四位和后四位,中间的部分用 * 号替代。

实现步骤:

  1. 定义一个方法来处理身份证号的脱敏
methods: {
  maskIdCard(idCard) {
    if (!idCard) return '';
    const visibleDigitsStart = 4; // 前面可见的位数
    const visibleDigitsEnd = 4; // 后面可见的位数
    const maskedLength = idCard.length - visibleDigitsStart - visibleDigitsEnd;
    const maskedSection = '*'.repeat(maskedLength);
    const visibleStart = idCard.slice(0, visibleDigitsStart);
    const visibleEnd = idCard.slice(-visibleDigitsEnd);
    return visibleStart + maskedSection + visibleEnd;
  },
  tapCertificateNo() {
    // 处理点击事件的逻辑
    console.log('身份证号被点击');
  }
}
  1. 在模板中调用这个方法
<template>
  <view>
    <u--text class="idcard" mode="name" @tap="tapCertificateNo" :text="maskIdCard(item.idCard)" format="encrypt"></u--text>
  </view>
</template>
  1. 完整的示例代码
<template>
  <view>
    <u--text class="idcard" mode="name" @tap="tapCertificateNo" :text="maskIdCard(item.idCard)" format="encrypt"></u--text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      item: {
        idCard: '123456789012345678'
      }
    };
  },
  methods: {
    maskIdCard(idCard) {
      if (!idCard) return '';
      const visibleDigitsStart = 4; // 前面可见的位数
      const visibleDigitsEnd = 4; // 后面可见的位数
      const maskedLength = idCard.length - visibleDigitsStart - visibleDigitsEnd;
      const maskedSection = '*'.repeat(maskedLength);
      const visibleStart = idCard.slice(0, visibleDigitsStart);
      const visibleEnd = idCard.slice(-visibleDigitsEnd);
      return visibleStart + maskedSection + visibleEnd;
    },
    tapCertificateNo() {
      // 处理点击事件的逻辑
      console.log('身份证号被点击');
    }
  }
};
</script>

<style scoped>
.idcard {
  /* 你的样式 */
}
</style>

在这个示例中,maskIdCard 方法会将身份证号的前四位和后四位保留,中间的部分用 * 号替代。这样就可以实现你想要的效果。