IT技术支持|Javascript验证信用卡号、信用卡类型(最全最新)

如果浏览不顺畅请到 原文章出处:https://www.sky8g.com/technology/2690/
请注意可能会提示风险,这是csdn设置网站设置的问题,请放心访问,谢谢。

IT技术支持|Javascript验证信用卡号、信用卡类型(最全最新)
文章图片

本篇文章是由SKY8G网编辑,纯属原创文章禁止抄袭。更新时间是2019年6月2日。
下面我将为大家介绍Javascript是如何验证信用卡号、信用卡类型,讲到这里有的小伙伴还不知道什么是信用卡的吧,信用卡就是我们可以tiqian提前透支的一种
卡这是和存蓄卡最大的区别。下面由我给大家介绍下信用的类型。
下面是通过百度百科的解释,信用卡根据流通范围的不同,可分为国际卡和地区卡
国际卡。国际卡是一种可以在发行国之外使用的信用卡,全球通用。境外五大集团(万事达卡组织、维萨国际组织、美国运通公司、JCB信用卡公司和大莱信用卡公司)分别发行的万事达卡(Master Card)、维萨卡(VISA Card)、运通卡(American Express Card)、JCB卡(JCB Card)和大莱卡(Diners Club Card)多数属于国际卡。
地区卡。地区卡是一种只能在发行国国内或一定区域内使用的信用卡。我国商业银行所发行的各类信用卡大多数属于地区卡。
我们要了解Luhn算法:
也称为「模10」Mod 10算法,是一种的效验和算法,一般用于身份证识别码,例如发卡行识别码、国际行动装置辨别码(IMEI),美国国家提供商标号码,或是加拿大社会保险号码。该算法由IBM科学家Hans Peter Luhn创建,专利于1954年1月6日申请,1960年8月23日颁发,美国专利号2950048[1]。
通过以上的介绍大家应该对信用卡有所了解了,接下面我们就利用js如何进行信用的号的验证,和js如何判断信用卡的类型的。

1
2
3
4
5
6
7
我们以数字「7992739871」为例,计算其校验位:
从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然後將兩位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);
把得到的数字加在一起(本例中得到67);
將数字的和取模10(本例中得到7),再用10去減(本例中得到3),得到校验位。
原始数字 7 9 9 2 7 3 9 8 7 1 x
偶数位乘2 7 18 9 4 7 6 9 16 7 2 x
將数字相加 7 9 9 4 7 6 9 7 7 2 =67
通过以上的阅读相信你已经掌握了Luhn的算法,接下来我将展示给大家如何验证信用的JavaScript代码。
验证信用的类型代码如下:
如果浏览不顺畅请到 原文章出处:https://www.sky8g.com/technology/2690/
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
39
/**
* 创建信用卡类型的Javascript对象
* 0 - regexp for card number
* 1 - regexp for cvn
* 2 - 通过Luhn算法检查信用卡号码是否正确
*/
creditCartTypes = {
'SO': [
new RegExp('^(6334[5-9]([0-9]{11}|[0-9]{13,14}))|(6767([0-9]{12}|[0-9]{14,15}))$'),
new RegExp('^([0-9]{3}|[0-9]{4})?$'),
true
],
'SM': [
new RegExp('(^(5[0678])[0-9]{11,18}$)|(^(6[^05])[0-9]{11,18}$)|' +
'(^(601)[^1][0-9]{9,16}$)|(^(6011)[0-9]{9,11}$)|(^(6011)[0-9]{13,16}$)|' +
'(^(65)[0-9]{11,13}$)|(^(65)[0-9]{15,18}$)|(^(49030)[2-9]([0-9]{10}$|[0-9]{12,13}$))|' +
'(^(49033)[5-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49110)[1-2]([0-9]{10}$|[0-9]{12,13}$))|' +
'(^(49117)[4-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49118)[0-2]([0-9]{10}$|[0-9]{12,13}$))|' +
'(^(4936)([0-9]{12}$|[0-9]{14,15}$))'), new RegExp('^([0-9]{3}|[0-9]{4})?$'),
true
],
'VI': [new RegExp('^4[0-9]{12}([0-9]{3})?$'), new RegExp('^[0-9]{3}$'), true],
'MC': [
new RegExp('^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$'),
new RegExp('^[0-9]{3}$'),
true
],
'AE': [new RegExp('^3[47][0-9]{13}$'), new RegExp('^[0-9]{4}$'), true],
'DI': [new RegExp('^(6011(0|[2-4]|74|7[7-9]|8[6-9]|9)|6(4[4-9]|5))\\d*$'), new RegExp('^[0-9]{3}$'), true],
'JCB': [new RegExp('^35(2[8-9]|[3-8])\\d*$'), new RegExp('^[0-9]{3}$'), true],
'DN': [new RegExp('^(3(0[0-5]|095|6|[8-9]))\\d*$'), new RegExp('^[0-9]{3}$'), true],
'UN': [
new RegExp('^(622(1(2[6-9]|[3-9])|[3-8]|9([[0-1]|2[0-5]))|62[4-6]|628([2-8]))\\d*?$'),
new RegExp('^[0-9]{3}$'),
true
],
'MI': [new RegExp('^(5(0|[6-9])|63|67(?!59|6770|6774))\\d*$'), new RegExp('^[0-9]{3}$'), true],
'MD': [new RegExp('^6759(?!24|38|40|6[3-9]|70|76)|676770|676774\\d*$'), new RegExp('^[0-9]{3}$'), true]
};
调用方法:

1
creditCartTypes['VI'][0].test('4111111111111111');
输出:

1
true
true表示是信用卡。
使用mod10验证信用卡号码代码:
如果浏览不顺畅请到 原文章出处:https://www.sky8g.com/technology/2690/
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
function validateCreditCard(s) {
// remove non-numerics
var v = '0123456789',
w = '',
i, j, k, m, c, a, x;

for (i = 0; i < s.length; i++) {
x = s.charAt(i);

if (v.indexOf(x, 0) !== -1) {
w += x;
}
}
// validate number
j = w.length / 2;
k = Math.floor(j);
m = Math.ceil(j) - k;
c = 0;

for (i = 0; i < k; i++) {
a = w.charAt(i * 2 + m) * 2;
c += a > 9 ? Math.floor(a / 10 + a % 10) : a;
}

for (i = 0; i < k + m; i++) {
c += w.charAt(i * 2 + 1 - m) * 1;
}

return c % 10 === 0;
}
调用:

1
2
validateCreditCard('4111111111111111');
validateCreditCard('432323908888');
输出:

1
2
true
false

【IT技术支持|Javascript验证信用卡号、信用卡类型(最全最新)】如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

    推荐阅读