在javascript中屏蔽最后4位数字

在这里,我使用正则表达式模式来掩盖信用卡号码的最后4位数字

$('#ccnumber').html(ccnbr); //ccnumber refers to div ID $('#ccnumber').text(function(_,val) { return val.replace(/\d{12}(\d{4})/, "************$1"); }); 

它仅适用于16位数的信用卡号码。 但是,我需要用*来掩盖输入的数字(可能是10或11)并显示最后4位数字。 在javascript / Jquery中有可能吗?

的jsfiddle

您可以使用:

 str = str.replace(/\d(?=\d{4})/g, "*"); 

在给定数量超过4位的数字中屏蔽除最后4位数之外的所有数字。

RegEx演示

说明:

  • 此reges使用正向前瞻(?=\d{4}) ,这意味着匹配后应跟4个数字。
  • \d匹配具有上述前瞻条件的单个数字并用*替换它

这是一种不使用RegEx的Javascript方法:

检查jsFiddle演示

 var mainStr = '1234567891234567', vis = mainStr.slice(-4), countNum = ''; for(var i = (mainStr.length)-4; i>0; i--){ countNum += '*'; } alert(countNum+vis); 

这个给你。 但请记住,这是非常非常糟糕的做法。

 $('#ccnumber').text(function(_,val) { return val.replace(/(\d*?)(\d{4})/, "************$1"); }); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

如果有人通过空间有一个卡占位符,例如“4242 4242 4242 4242”,那么你必须使用其他正则表达式:\ d {4}(?= \ d {4})并替换“****”:

完整示例:

 str = str.replace(/\d{4}(?= \d{4})/g, "****"); 

它将取代卡“4242 4242 4242 4242”为“**** **** **** 4242”

测试示例