jquery 如果输入了抄送号码,则屏蔽信用卡号码

xuo3flqw  于 2023-10-17  发布在  jQuery
关注(0)|答案(3)|浏览(128)
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/但它只适用于有信用卡号码的输入字段。
我怎么能这么做呢?
谢谢你,谢谢!

tyky79it

tyky79it1#

在这里,您可以找到有效的CC编号格式和与之匹配的正则表达式:http://www.regular-expressions.info/creditcard.html
问题是,旧的VISA卡有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.

8xiog9wr

8xiog9wr2#

http://jquerycreditcardvalidator.com/这个库可能会帮助你它可以只检测信用卡号码,避免其他号码
var result = $('#cardnumber').validateCreditCard({ accept:请输入'visa','mastercard']})

hc2pp10m

hc2pp10m3#

var cardNumber       = '4847835480498037';
var cardNumberDashed = '4847835480498037';
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(4847)       + '<br/>' + 
                          hashedCardNumber(cardNumberDashed) + '<br/>' + 
                          hashedCardNumber(cardNumberSpaced);

相关问题