在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”