2017-08-30 39 views
0

遮蔽信用卡號碼,如果一個CC編號進入

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/但它僅適用於具有信用卡號碼輸入欄。

我該怎麼做?

謝謝!

+1

發佈您的代碼在你的問題 – j08691

+0

你可能想,如果找出來這甚至是合法的。 PCI合規人員很可能想要打你一巴掌。 –

+0

@BrianGottier如何合法地做到這一點?我不希望我的客戶向我發送信用卡號碼,他們有時會這樣做! –

回答

0

http://jquerycreditcardvalidator.com/ 這個庫可以幫助你也可以只檢測信用卡號碼,並避免其他數字

VAR的結果= $( '#cardnumber')validateCreditCard({接受:[ '簽證', '萬事達卡' ]})

+0

謝謝,但Qusai我希望它在對話期間檢測數字,我怎麼能這樣運行它? –

0

在這裏你可以找到有效的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.

+0

謝謝!好東西,我不接受我的網站AMEX支付:D –

+0

增加了一個例子,說明如何用「****」代替16位CC號碼。 –