var cardNumber = '4761640026883566';
var cardNumberDashed = '4761-6400-1234-2345';
var cardNumberSpaced = '4761 6400 1234 3523';
var ensureOnlyNumbers = R.replace(/[^0-9]+/g, '');
var maskAllButLastFour = R.replace(/[0-9](?=([0-9]{4}))/g, '*');
var hashedCardNumber = R.compose(maskAllButLastFour, ensureOnlyNumbers);
document.body.innerHTML = hashedCardNumber(cardNumber) + '<br/>' +
hashedCardNumber(cardNumberDashed) + '<br/>' +
hashedCardNumber(cardNumberSpaced);
我的情况有点复杂,我有一个<textarea>,用作聊天窗口中的消息字段。我想掩盖在这次聊天中发送的所有信用卡号码,但不是每个号码,因为我确实需要一个来自客户端的会员号码,即10-15位数字。
<textarea id="postMessage"></textarea>
我遵循了jsfiddle:http://jsfiddle.net/7odv6kfk/中的代码,但是它只在有信用卡号码的输入字段上工作。
我怎么能这么做?
谢谢!
发布于 2017-08-30 21:22:28
http://jquerycreditcardvalidator.com/这个库可以帮助你只检测信用卡号码,避免其他号码。
.validateCreditCard({ accept:'visa','mastercard‘})
发布于 2017-08-30 21:28:01
在这里,您可以找到与它们相匹配的有效CC数字格式和正则表达式:http://www.regular-expressions.info/creditcard.html
问题是旧签证卡有13位数,美国运通有15位数字,有些JCB卡有15位数字。这与您的会员号码相冲突。那么你需要支持16位数字的CC号码吗?
下面的代码演示如何用星号替换16位CC数字:
var re = /\b(\d[ -]?){15}\d\b/g;
var text = "My CC number is 4761640026883566 (or 4761-6400-1234-2345, or 4761 6400 1234 3523). My membership number is 1234567890123."
document.body.innerHTML = text.replace(re, "****");输出:
My CC number is **** (or ****, or ****). My membership number is 1234567890123.
https://stackoverflow.com/questions/45969830
复制相似问题