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);
&#13;
我的情况有点复杂,我有<textarea>
我在聊天窗口中用作消息字段。 我想屏蔽在此聊天中发送的所有信用卡号码,但不是每个号码,因为我确实需要来自客户的会员号码,这是10-15位数字。
<textarea id="postMessage"></textarea>
我遵循了这个jsfiddle:http://jsfiddle.net/7odv6kfk/中的代码,但它仅适用于具有信用卡号的输入字段。
我该怎么做?
谢谢!
答案 0 :(得分:0)
http://jquerycreditcardvalidator.com/ 这个库可以帮助您只检测信用卡号码并避免使用其他号码
var result = $(&#39; #cardnumber&#39;)。validateCreditCard({accept:[&#39; visa&#39;,&#39; mastercard&#39;]})
答案 1 :(得分:0)
在这里,您可以找到有效的CC编号格式和匹配它们的正则表达式: http://www.regular-expressions.info/creditcard.html
问题是旧的VISA卡有13位数字,American Express有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.