-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathisCPFOrCNPJ.ts
More file actions
46 lines (41 loc) · 960 Bytes
/
isCPFOrCNPJ.ts
File metadata and controls
46 lines (41 loc) · 960 Bytes
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
40
41
42
43
44
45
46
import isCPF, { CPF_PATTERN } from "./isCPF";
import isCNPJ, { CNPJ_PATTERN } from "./isCNPJ";
const PATTERNS = [CPF_PATTERN, CNPJ_PATTERN];
/**
* Check if a value is a valid CPF or CNPJ
* @example ```js
* isCPFOrCNPJ('366.418.768-70')
* //=> true
*
* isCPFOrCNPJ('36641876870')
* //=> true
*
* isCPFOrCNPJ('213.198.013-20')
* //=> false
*
* isCPFOrCNPJ('2131201872781')
* //=> false
*
* isCPFOrCNPJ('11111111111')
* //=> false
*
* isCPFOrCNPJ('41142260000189')
* //=> true
*
* isCPFOrCNPJ('45.723.174/0001-10')
* //=> true
*
* isCPFOrCNPJ('411407182')
* //=> false
*
* isCPFOrCNPJ('11.111.111/1111-11')
* //=> false
* ```
* @param value - A text containing a CPF or CNPJ
*/
const isCPFOrCNPJ = (value: string): boolean => {
const matches = PATTERNS.map((pattern) => pattern.test(value));
if (matches.indexOf(true) === -1) return false;
return matches[0] ? isCPF(value) : isCNPJ(value);
};
export default isCPFOrCNPJ;