首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输入CC号码,则隐藏信用卡号码

如果输入CC号码,则隐藏信用卡号码
EN

Stack Overflow用户
提问于 2017-08-30 21:16:32
回答 2查看 2.1K关注 0票数 0

代码语言:javascript
复制
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/中的代码,但是它只在有信用卡号码的输入字段上工作。

我怎么能这么做?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-08-30 21:22:28

http://jquerycreditcardvalidator.com/这个库可以帮助你只检测信用卡号码,避免其他号码。

.validateCreditCard({ accept:'visa','mastercard‘})

票数 0
EN

Stack Overflow用户

发布于 2017-08-30 21:28:01

在这里,您可以找到与它们相匹配的有效CC数字格式和正则表达式:http://www.regular-expressions.info/creditcard.html

问题是旧签证卡有13位数,美国运通有15位数字,有些JCB卡有15位数字。这与您的会员号码相冲突。那么你需要支持16位数字的CC号码吗?

下面的代码演示如何用星号替换16位CC数字:

代码语言:javascript
复制
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.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45969830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档