-
Notifications
You must be signed in to change notification settings - Fork 3k
/
Copy pathcardUtils.js
38 lines (33 loc) · 1.06 KB
/
cardUtils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* Returns the masked card number (ex: 4242XXXXXXXX4242)
*
* @param {String} cardNumber
* @return {Boolean}
*/
function maskCardNumber(cardNumber) {
const firstFour = cardNumber.substring(0, 4);
const lastFour = cardNumber.substring(cardNumber.length - 4);
return `${firstFour}${'X'.repeat(cardNumber.length - 8)}${lastFour}`;
}
/**
* @param {String} expirationDateString - string in MM/YYYY, MM/YY, MMYY, or MMYYYY format
* @returns {String}
*/
function getMonthFromExpirationDateString(expirationDateString) {
return expirationDateString.substr(0, 2);
}
/**
* @param {String} expirationDateString - string in MM/YYYY, MM/YY, MMYY, or MMYYYY format
* @returns {String}
*/
function getYearFromExpirationDateString(expirationDateString) {
const cardYear = expirationDateString.includes('/')
? expirationDateString.substr(3)
: expirationDateString.substr(2);
return cardYear.length === 2 ? `20${cardYear}` : cardYear;
}
export {
maskCardNumber,
getMonthFromExpirationDateString,
getYearFromExpirationDateString,
};