如果输入CC号,则屏蔽信用卡号

时间:2017-08-30 21:16:33

标签: javascript jquery html



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;
&#13;
&#13;

我的情况有点复杂,我有<textarea>我在聊天窗口中用作消息字段。 我想屏蔽在此聊天中发送的所有信用卡号码,但不是每个号码,因为我确实需要来自客户的会员号码,这是10-15位数字。

<textarea id="postMessage"></textarea>

我遵循了这个jsfiddle:http://jsfiddle.net/7odv6kfk/中的代码,但它仅适用于具有信用卡号的输入字段。

我该怎么做?

谢谢!

2 个答案:

答案 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.