js-显示手机号并且对号码中间四位数

80 阅读1分钟

需求原型如下:

image.png

实现过程

我用了vue的过滤器实现:

<div>{{ e.name | encipher }} </div>
filters: {
  encipher(val) {
      return /^[0-9]{11}$/.test(val) ? val.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2") : val;
      },
    }

实现思路:将验证和加密逻辑合并在一行中,使用条件 (ternary) 运算符来决定是否加密。如果手机号码是有效的,它将进行加密;否则,它将返回原始值。这种方式可以使代码更加紧凑和易读。

技术实现: 这个正则表达式 ^[0-9]{11}$ 会匹配一个以11位数字开头和结束的字符串。如果匹配成功则继续加密,replace(/(\d{3})\d{4}(\d{4})/, "$1****$2")来加密中间的四位数字并返回加密后的数据

成果:

image.png