Skip to content

Instantly share code, notes, and snippets.

@buroz
Last active May 5, 2020 11:30
Show Gist options
  • Save buroz/8a83fb01bb55e069ee32f0dfce6772a7 to your computer and use it in GitHub Desktop.
Save buroz/8a83fb01bb55e069ee32f0dfce6772a7 to your computer and use it in GitHub Desktop.
Credit Card Regex
enum CreditCardType {
VISA = "visa",
MASTERCARD = "mastercard",
DISCOVER = "discover",
AMERICANEXPRESS = "american-express",
DINERSCLUB = "diners-club",
JCB = "jcb",
TROY = "troy"
}
const validateCardNumber = (cardnumber: string) => {
const types = ["visa", "mastercard", "discover", "american-express", "diners-club", "jcb", "troy"];
return new Promise((resolve, reject) => {
cardnumber = cardnumber.replace(/[ -]/g, "");
const match = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))|((?:9792|65[0-9]{2}|36|2205)[0-9]{12})$/.exec(
cardnumber
);
if (match) {
for (var i = 1; i < match.length; i++) {
if (match[i]) {
resolve(types[i - 1]);
}
}
} else {
reject("invalid card");
}
});
};
/*
Amex Card: ^3[47][0-9]{13}$
BCGlobal: ^(6541|6556)[0-9]{12}$
Carte Blanche Card: ^389[0-9]{11}$
Diners Club Card: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$
Discover Card: ^65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}|(622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])[0-9]{10})$
Insta Payment Card: ^63[7-9][0-9]{13}$
JCB Card: ^(?:2131|1800|35\d{3})\d{11}$
KoreanLocalCard: ^9[0-9]{15}$
Laser Card: ^(6304|6706|6709|6771)[0-9]{12,15}$
Maestro Card: ^(5018|5020|5038|5893|6304|6759|6761|6762|6763)[0-9]{8,15}$
Mastercard: ^5[1-5][0-9]{14}$
Solo Card: ^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$
Switch Card: ^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$
Union Pay Card: ^(62[0-9]{14,17})$
Visa Card: ^4[0-9]{12}(?:[0-9]{3})?$
Visa Master Card: ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment