从卡号中识别卡类型
这个问题在这里已经有了答案:
我相信你可能正在寻找像这样的东西:
<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/
卡公司有一个相当明确的前缀列表,这些列表是特定于卡类型的。
这些前缀的范围从单个数字(一切从'5'开始为万事达卡),一些长达六或七位数的字符串,对于更加模糊的卡类型以及主流卡,但不仅能够识别卡类型而且还是开证行。
以下是我找到的一个资源:http://www.beachnet.com/~hstiles/cardtype.html
您可能还想看维基百科:http://en.wikipedia.org/wiki/Credit_card_numbers
不利的一面是,尽管现在流通的前缀已经非常固定,但他们需要提供更多的前缀,所以您需要确保保持任何前缀列表最新。 ,特别是如果你用它来检查更长的前缀范围。
卡前缀方案在BIN(银行身份证号码)列表中详细说明并定期更改,我建议不要对PAN的前6位数字进行验证,除非您计划定期更新并仅对第一个数字进行粗略检查(例如你的签证/电子邮件缺少48 *,签证长度可能跨越16-19)。
如果你在英国; http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf
链接地址: http://www.djcxy.com/p/70699.html