当前位置:

js前端身份证号、手机号脱敏、手机号、身份证号加密ios浏览器兼容性问题

访客 2024-02-18 420 0

加密,其实就是对字符串的处理,主要包括查找,截取,替换,当然我们还可以使用正则

前端数据是从后端拿到的,关于数据敏感的问题,可能在开发过程中经常遇到,我们也知道前端对数据的处理也都是表皮层,没法达到真正的安全目的。但,没办法,有时候我们还是要去做一些本不该做的事情来让某些东西看似合理。

1、手机号脱敏

  • constphone="13031325689";
  • conststr=phone.replace(/(\d{3})\d*(\d{4})/,'$1****$2')
  • console.log(str)//130****5689
  • 2、身份证号脱敏

  • constcard="512326199102115645";
  • conststr1=card.replace(/(\w{6})\w*(\w{4})/,'$1********$2');
  • console.log(str)//512326********5645
  • $1,$2是表示的小括号里的内容;$1是第一个小括号里的,$2是第2个小括号里的,以此类推

    例如手机号脱敏:

    (\d{3})=130

    (\d{4})=5689

    3、ios浏览器兼容问题

    之前用的正则表达式零宽断言来进行脱敏,导致页面打开空白

    safari浏览器不支持正则表达式中携带零宽断言。如果在正则中携带零宽断言,会导致页面空白,并且控制台报错:

    SyntaxError:Invalidregularexpression:invalidgroupspecifiername
    或者

    SyntaxError:Invalidregularexpression:unrecognizedcharacterafter(?

    使用方式如下(目前只兼容安卓,safari也不支持):

  • //正则替换身份证号脱敏
  • letidCardNum='512326199102115645';
  • idCardNum=idCardNum.replace(/(?<=\d{3})\d{12}(?=\d{2})/,"************")
  • console.log(idCardNum)//512*************45
  • //正则替换手机号脱敏
  • letmobile='13031325689';
  • mobile=mobile.replace(/(?<=\d{3})\d{5}(?=\d{2})/,"*****")
  • console.log(mobile)//130*****89
  • 发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~