Skip to content

Commit 2247da9

Browse files
authored
Merge pull request #36 from npranto/is-credit-card
feat(component): Adds isCreditCardNumber()
2 parents c0de20c + 5308978 commit 2247da9

File tree

2 files changed

+209
-0
lines changed

2 files changed

+209
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { isUndefined, isNull } from './../../utils';
2+
3+
const isCreditCardNumber = creditCardNumber => (
4+
!isUndefined(creditCardNumber) &&
5+
!isNull(creditCardNumber) &&
6+
/^(3[47]\d{13})|(30[0123456]\d{11})|(54\d{14})|(6(?:011\d{12}|5\d{14}|4[4-9]\d{13}|22(?:1(?:2[6-9]|[3-9]\d)|[2-8]\d{2}|9(?:[01]\d|2[0-5]))\d{10})|(63[7-9]\d{13})|(35(2([89])|([3-8]\d))\d{12})|(((5018)|(5020)|(5038)|(5893)|(6304)|(6759)|(676[1-3]))\d{12})|((?: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})|(54\d{14})|(((4026)|(4508)|(4844)|(4913)|(4917))\d{12}|417500\d{10})|(62\d{14})|(4\d{15}))$/.test(creditCardNumber)
7+
);
8+
9+
export default isCreditCardNumber;
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
import { assert } from 'chai';
2+
import isCreditCardNumber from './isCreditCardNumber';
3+
4+
describe('Regexer', () => {
5+
describe('isCreditCardNumber()', () => {
6+
it('should return true when passes 0', () => {
7+
assert.equal(isCreditCardNumber(0), false);
8+
});
9+
it('should return true when passes 345768475867474', () => {
10+
assert.equal(isCreditCardNumber(345768475867474), true);
11+
});
12+
it('should return true when passes 375768475867474', () => {
13+
assert.equal(isCreditCardNumber(375768475867474), true);
14+
});
15+
it('should return true when passes 30065849264810', () => {
16+
assert.equal(isCreditCardNumber(30065849264810), true);
17+
});
18+
it('should return true when passes 30165849264810', () => {
19+
assert.equal(isCreditCardNumber(30165849264810), true);
20+
});
21+
it('should return true when passes 30265849264810', () => {
22+
assert.equal(isCreditCardNumber(30265849264810), true);
23+
});
24+
it('should return true when passes 30365849264810', () => {
25+
assert.equal(isCreditCardNumber(30365849264810), true);
26+
});
27+
it('should return true when passes 30465849264810', () => {
28+
assert.equal(isCreditCardNumber(30465849264810), true);
29+
});
30+
it('should return true when passes 30565849264810', () => {
31+
assert.equal(isCreditCardNumber(30565849264810), true);
32+
});
33+
it('should return true when passes 30665849264810', () => {
34+
assert.equal(isCreditCardNumber(30665849264810), true);
35+
});
36+
it('should return true when passes 5465838563658274', () => {
37+
assert.equal(isCreditCardNumber(5465838563658274), true);
38+
});
39+
it('should return true when passes 6011666666666666', () => {
40+
assert.equal(isCreditCardNumber(6011666666666666), true);
41+
});
42+
it('should return true when passes 6446666666666666', () => {
43+
assert.equal(isCreditCardNumber(6446666666666666), true);
44+
});
45+
it('should return true when passes 6456666666666666', () => {
46+
assert.equal(isCreditCardNumber(6456666666666666), true);
47+
});
48+
it('should return true when passes 6466666666666666', () => {
49+
assert.equal(isCreditCardNumber(6466666666666666), true);
50+
});
51+
it('should return true when passes 6476666666666666', () => {
52+
assert.equal(isCreditCardNumber(6476666666666666), true);
53+
});
54+
it('should return true when passes 6486666666666666', () => {
55+
assert.equal(isCreditCardNumber(6486666666666666), true);
56+
});
57+
it('should return true when passes 6496666666666666', () => {
58+
assert.equal(isCreditCardNumber(6496666666666666), true);
59+
});
60+
it('should return true when passes 6566666666666665', () => {
61+
assert.equal(isCreditCardNumber(6566666666666665), true);
62+
});
63+
it('should return true when passes 6221263524660820', () => {
64+
assert.equal(isCreditCardNumber(6221263524660820), true);
65+
});
66+
it('should return true when passes 6221265612307271', () => {
67+
assert.equal(isCreditCardNumber(6221265612307271), true);
68+
});
69+
it('should return true when passes 6221266746774543', () => {
70+
assert.equal(isCreditCardNumber(6221266746774543), true);
71+
});
72+
it('should return true when passes 6221261475756845', () => {
73+
assert.equal(isCreditCardNumber(6221261475756845), true);
74+
});
75+
it('should return true when passes 6221264448556250', () => {
76+
assert.equal(isCreditCardNumber(6221264448556250), true);
77+
});
78+
it('should return true when passes 6221266577468231', () => {
79+
assert.equal(isCreditCardNumber(6221266577468231), true);
80+
});
81+
it('should return true when passes 6221263147160307', () => {
82+
assert.equal(isCreditCardNumber(6221263147160307), true);
83+
});
84+
it('should return true when passes 6221268527241486', () => {
85+
assert.equal(isCreditCardNumber(6221268527241486), true);
86+
});
87+
it('should return true when passes 6221264566781250', () => {
88+
assert.equal(isCreditCardNumber(6221264566781250), true);
89+
});
90+
it('should return true when passes 6221261526554363', () => {
91+
assert.equal(isCreditCardNumber(6221261526554363), true);
92+
});
93+
it('should return true when passes 6229253401434268', () => {
94+
assert.equal(isCreditCardNumber(6229253401434268), true);
95+
});
96+
it('should return true when passes 6376464646464646', () => {
97+
assert.equal(isCreditCardNumber(6376464646464646), true);
98+
});
99+
it('should return true when passes 6386464646464646', () => {
100+
assert.equal(isCreditCardNumber(6386464646464646), true);
101+
});
102+
it('should return true when passes 6396464646464646', () => {
103+
assert.equal(isCreditCardNumber(6396464646464646), true);
104+
});
105+
it('should return true when passes 3528777777777777', () => {
106+
assert.equal(isCreditCardNumber(3528777777777777), true);
107+
});
108+
it('should return true when passes 3533777777777777', () => {
109+
assert.equal(isCreditCardNumber(3533777777777777), true);
110+
});
111+
it('should return true when passes 3586777777777777', () => {
112+
assert.equal(isCreditCardNumber(3586777777777777), true);
113+
});
114+
it('should return true when passes 3589777777777777', () => {
115+
assert.equal(isCreditCardNumber(3589777777777777), true);
116+
});
117+
it('should return true when passes 5018666666666666', () => {
118+
assert.equal(isCreditCardNumber(5018666666666666), true);
119+
});
120+
it('should return true when passes 5020777777777776', () => {
121+
assert.equal(isCreditCardNumber(5020777777777776), true);
122+
});
123+
it('should return true when passes 5038777777777777', () => {
124+
assert.equal(isCreditCardNumber(5038777777777777), true);
125+
});
126+
it('should return true when passes 5893456456464565', () => {
127+
assert.equal(isCreditCardNumber(5893456456464565), true);
128+
});
129+
it('should return true when passes 6304546456456465', () => {
130+
assert.equal(isCreditCardNumber(6304546456456465), true);
131+
});
132+
it('should return true when passes 6759546456456456', () => {
133+
assert.equal(isCreditCardNumber(6759546456456456), true);
134+
});
135+
it('should return true when passes 6761564564565466', () => {
136+
assert.equal(isCreditCardNumber(6761564564565466), true);
137+
});
138+
it('should return true when passes 6762736457834686', () => {
139+
assert.equal(isCreditCardNumber(6762736457834686), true);
140+
});
141+
it('should return true when passes 6763666666666666', () => {
142+
assert.equal(isCreditCardNumber(6763666666666666), true);
143+
});
144+
it('should return true when passes 2221006666666666', () => {
145+
assert.equal(isCreditCardNumber(2221006666666666), true);
146+
});
147+
it('should return true when passes 2720996666666666', () => {
148+
assert.equal(isCreditCardNumber(2720996666666666), true);
149+
});
150+
it('should return true when passes 2620996666666666', () => {
151+
assert.equal(isCreditCardNumber(2620996666666666), true);
152+
});
153+
it('should return true when passes 5166666666666666', () => {
154+
assert.equal(isCreditCardNumber(5166666666666666), true);
155+
});
156+
it('should return true when passes 5566666666666666', () => {
157+
assert.equal(isCreditCardNumber(5566666666666666), true);
158+
});
159+
it('should return true when passes 5266666666666666', () => {
160+
assert.equal(isCreditCardNumber(5266666666666666), true);
161+
});
162+
it('should return true when passes 5465656565656565', () => {
163+
assert.equal(isCreditCardNumber(5465656565656565), true);
164+
});
165+
it('should return true when passes 4026564564566646', () => {
166+
assert.equal(isCreditCardNumber(4026564564566646), true);
167+
});
168+
it('should return true when passes 4175005464565466', () => {
169+
assert.equal(isCreditCardNumber(4175005464565466), true);
170+
});
171+
it('should return true when passes 4508456456456546', () => {
172+
assert.equal(isCreditCardNumber(4508456456456546), true);
173+
});
174+
it('should return true when passes 4844546756786887', () => {
175+
assert.equal(isCreditCardNumber(4844546756786887), true);
176+
});
177+
it('should return true when passes 4913534534565657', () => {
178+
assert.equal(isCreditCardNumber(4913534534565657), true);
179+
});
180+
it('should return true when passes 4917782658876256', () => {
181+
assert.equal(isCreditCardNumber(4917782658876256), true);
182+
});
183+
it('should return true when passes 6277777777777777', () => {
184+
assert.equal(isCreditCardNumber(6277777777777777), true);
185+
});
186+
it('should return true when passes 4000000000000000', () => {
187+
assert.equal(isCreditCardNumber(4000000000000000), true);
188+
});
189+
it('should return false when passes \'\'', () => {
190+
assert.equal(isCreditCardNumber(''), false);
191+
});
192+
it('should return false when passes \'?\'', () => {
193+
assert.equal(isCreditCardNumber('?'), false);
194+
});
195+
it('should return false when passes null', () => {
196+
assert.equal(isCreditCardNumber(null), false);
197+
});
198+
});
199+
});
200+

0 commit comments

Comments
 (0)