我有一系列看起来像这样的卡片类型
var cards = new Array();
cards [0] = {name: "VISA", length: "13,16", prefixes: "4", checkdigit: true};
cards [1] = {name: "VISA_DELTA/ELECTRON", length: "16", prefixes: "417500,4917,4913", checkdigit: true};
然而,id喜欢能够根据输入的卡号找到卡片类型。例如,如果他们从下拉列表中选择他们的卡片类型,即签证,那么信用卡号码应该从4开始,否则当他们提交表格时,应该显示某种类型的消息说明这是(无论是什么卡,请更换卡片类型)。任何帮助将不胜感激。
卡号文本字段的ID是CardNumber。我不知道可能需要什么其他信息,我有一个名为Validate的函数,它验证表单的其余部分,以及函数调用Calculate,它执行luhn检查。
答案 0 :(得分:38)
我相信你可能正在寻找这样的东西:
<script type="text/javascript">
function GetCardType(number)
{
// visa
var re = new RegExp("^4");
if (number.match(re) != null)
return "Visa";
// Mastercard
// Updated for Mastercard 2017 BINs expansion
if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/.test(number))
return "Mastercard";
// AMEX
re = new RegExp("^3[47]");
if (number.match(re) != null)
return "AMEX";
// Discover
re = new RegExp("^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)");
if (number.match(re) != null)
return "Discover";
// Diners
re = new RegExp("^36");
if (number.match(re) != null)
return "Diners";
// Diners - Carte Blanche
re = new RegExp("^30[0-5]");
if (number.match(re) != null)
return "Diners - Carte Blanche";
// JCB
re = new RegExp("^35(2[89]|[3-8][0-9])");
if (number.match(re) != null)
return "JCB";
// Visa Electron
re = new RegExp("^(4026|417500|4508|4844|491(3|7))");
if (number.match(re) != null)
return "Visa Electron";
return "";
}
</script>
最初发布在这里@ http://mel-green.com/2008/11/determine-credit-card-type-with-javascript/
答案 1 :(得分:2)
卡公司有一个相当明确的前缀列表,这些前缀特定于卡类型。
这些前缀的范围从单个数字(一切以“5”开头是万事达卡)到一些长达六七个数字的字符串,用于更加模糊的卡片类型,也适用于主流卡片,但不仅能够识别卡类型,也是发卡银行。
这是我找到的一个资源:http://www.beachnet.com/~hstiles/cardtype.html
您可能还想查看维基百科:http://en.wikipedia.org/wiki/Credit_card_numbers
不利的一面是,虽然现在流通的前缀几乎是固定的,但他们总是需要提出更多,所以你需要确保你保留任何前缀列表 - 到目前为止,特别是如果你用它来检查更长的前缀范围。
答案 2 :(得分:1)
卡前缀方案在BIN(银行识别号码)列表中详细说明并定期更改,我建议不要对PAN的完整前6位数进行验证,除非您计划定期更新并且只对第一对进行粗略检查数字(例如,签证/电子邮件缺少48 *,签证长度可达16-19)。
如果你在英国; http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf
答案 3 :(得分:1)
这是一个专为此设计的jQuery插件:
http://jquerycreditcardvalidator.com/
另请参阅此StackOverflow答案,以便很好地讨论信用卡号码与卡片类型的关系: