用#替换所有字符,除了最后4个。

14
function maskify(cc) {
    var dd = cc.toString();
    var hash = dd.replace((/./g), '#');
    for (var i = (hash.length - 4); i < hash.length; i++) {
        hash[i] = dd[i];
    }
    return hash;
}
我试图用#替换所有字符,除了最后四个。为什么它不起作用?
4个回答

44
您可以像这样做:
dd.replace(/.(?=.{4,}$)/g, '#');

var dd = 'Hello dude';
var replaced = dd.replace(/.(?=.{4,}$)/g, '#');
document.write(replaced);


2
@LukasDavid,它基本上替换了所有在其后有超过4个字符的字符。因此,当它到达字符串末尾的前4个字符时,正则表达式将失败,并且不会替换这些字符。 - MinusFour

4

如果您找到解决方案,请尝试此技巧。

function maskify(cc) {
  return cc.slice(0, -4).replace(/./g, '#') + cc.slice(-4);
}

0
function maskify(cc) {
  let arr = cc.split('');
  for (let i = 0; i < arr.length - 4; i++){
    arr[i] = '#';
  }
  return arr.join('');
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接