在Node中,在渲染视图层之前,我需要将信用卡转换为如下所示:************1234。没有循环和丑陋是有一个实用程序或一个班轮为这?信用卡可以潜在地看这些方式之一:
************1234
1234567898765432 1234-5678-9876-5432 1234 5678 9876 5432
xxslljrj1#
不需要正则表达式:
var cc='1234-5678-9012-3456'; var masked = '************'+cc.substr(-4); // ************3456
只要最后四个数字是连续的,就可以用于任何格式。
bkhjykvo2#
下面是使用Ramda和一些RegEx的一种方法:
var ensureOnlyNumbers = R.replace(/[^0-9]+/g, ''); var maskAllButLastFour = R.replace(/[0-9](?=([0-9]{4}))/g, '*'); var hashedCardNumber = R.compose(maskAllButLastFour, ensureOnlyNumbers); hashedCardNumber('1234567898765432'); // ************5432
演示:http://jsfiddle.net/7odv6kfk/
y3bcpkx13#
这是为那些说他们不需要另一种方法来掩盖信用卡的人准备的。这个解决方案将用星号附加卡号的最后4个字符。
var cardNumber = '4761640026883566'; console.log(maskCard(cardNumber)); function maskCard(num) { return `${'*'.repeat(num.length - 4)}${cardNumber.substr(num.length - 4)}`; }
jsfiddle example
zlhcx6iw4#
我使用这个对我有用的函数,因为屏蔽信用卡号码并将其格式化为四个字符的块,如**** **** **** 1234,这里的解决方案:
**** **** **** 1234
const maskCreditCard = (card) => { return card .replace(/.(?=.{5})/g, "*") .match(/.{1,4}/g) .join(" "); };
rpppsulh5#
下面是使用Regex和lookahead的普通JavaScript
var cardNumbers = [ "1234567898765432", "1234-5678-9876-5432", "1234 5678 9876 5432" ]; console.log(cardNumbers.map(maskCardNumber)); //> ["************5432", "************5432", "************5432"] function maskCardNumber(cardNumber) { return cardNumber.replace(/^[\d-\s]+(?=\d{4})/, "************"); };
与AllienWebguy的实现不同:
replace()
"1B2C3D4E5F6G7H89876-5432"
"1234+5678+9876=54-32"
brvekthn6#
function hashCreditCard(number){ const str = String(number).replace(" ","").replace("-","") const last = str.slice(-4) return last.padStart(str.length,"*") } console.log(hashCreditCard(5859831060602434)) console.log(hashCreditCard("5859-8310-6060-2434")) console.log(hashCreditCard("5859 8310 6060 2434"))
zdwk9cvp7#
删除非数字,生成一个长度为-4的星号字符串,将最后4个字符追加到:
var masked = Array(cc.replace(/[^\d]/g, "").length - 3).join("*") + cc.substr(cc.length - 4);
或在掩码中包含空格/连字符:
var masked = Array(cc.length - 3).join("*") + cc.substr(cc.length - 4);
7条答案
按热度按时间xxslljrj1#
不需要正则表达式:
只要最后四个数字是连续的,就可以用于任何格式。
bkhjykvo2#
下面是使用Ramda和一些RegEx的一种方法:
演示:http://jsfiddle.net/7odv6kfk/
y3bcpkx13#
这是为那些说他们不需要另一种方法来掩盖信用卡的人准备的。这个解决方案将用星号附加卡号的最后4个字符。
jsfiddle example
zlhcx6iw4#
我使用这个对我有用的函数,因为屏蔽信用卡号码并将其格式化为四个字符的块,如
**** **** **** 1234
,这里的解决方案:rpppsulh5#
下面是使用Regex和lookahead的普通JavaScript
与AllienWebguy的实现不同:
replace()
调用中完成所有操作"1B2C3D4E5F6G7H89876-5432"
或"1234+5678+9876=54-32"
)brvekthn6#
zdwk9cvp7#
删除非数字,生成一个长度为-4的星号字符串,将最后4个字符追加到:
或在掩码中包含空格/连字符: