JS隐藏部分号码

银行卡,身份证,手机号码等等都需要隐藏部分号码来起到保护作用。
以下是用javascript来制作的一个转换字符串的函数(replaceChars),可以用自定义的字符(mask)来替换相应位数(length)的号码,也可以利用参数(fromBegin)来使其“从头”或者“从尾”隐藏。

var replaceChars = function(str,length,fromBegin,mask){
  mask = mask ? mask : '*';
  var replacement = '';
  for(var i=0; i<length; i++){
    replacement += mask;
  }
  if(fromBegin){
    var regexp = new RegExp('.{1,' + length + '}');
    return str.replace(regexp, replacement);
  } else {
    var regexp = new RegExp('.{' + (str.length - length) + ',' + str.length + '}');
    return str.substring(0,(str.length - length)) + str.replace(regexp, replacement);
  }
}

//clear();
//var str = '123456789';
//console.log(replaceChars(str,5,false,'*'));

此函数的核心是利用原生JS中字符串的replace方法,这个方法的第一个参数可以是字符串或正则表达式,这里采用的是正则表达式来确定需要替换的字符。


图片来自于网络

拓展:

  • 注释的部分代码是测试用例,可以直接在firebug之类的控制台测试。
  • 此函数也可以加入String的原型链中,便于使用。
  • 此函数的参数初始化和顺序有待进一步优化。
    </br></br></br>

参考文章:55分钟学正则,w3cshool - replace(),隐藏手机号
</br>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容