需求原型如下:
实现过程
我用了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")来加密中间的四位数字并返回加密后的数据