UNPKG

validation-box

Version:

The only validation library - with flexible regex - you need.

1 lines 3.5 kB
{"version":3,"sources":["../src/validators/countries/brasil.ts"],"sourcesContent":["// Validation of CPF\r\nexport const validateCPF = (cpf: string): boolean => {\r\n cpf = cpf.replace(/\\D/g, \"\");\r\n\r\n if (cpf.length !== 11) return false;\r\n if (/^(\\d)\\1{10}$/.test(cpf)) return false;\r\n\r\n let sum = 0;\r\n for (let i = 0; i < 9; i++) {\r\n sum += parseInt(cpf.charAt(i)) * (10 - i);\r\n }\r\n let remainder = (sum * 10) % 11;\r\n if (remainder === 10 || remainder === 11) remainder = 0;\r\n if (remainder !== parseInt(cpf.charAt(9))) return false;\r\n\r\n sum = 0;\r\n for (let i = 0; i < 10; i++) {\r\n sum += parseInt(cpf.charAt(i)) * (11 - i);\r\n }\r\n remainder = (sum * 10) % 11;\r\n if (remainder === 10 || remainder === 11) remainder = 0;\r\n if (remainder !== parseInt(cpf.charAt(10))) return false;\r\n\r\n return true;\r\n};\r\n\r\n// Validation of CNPJ\r\nexport const validateCNPJ = (cnpj: string): boolean => {\r\n cnpj = cnpj.replace(/\\D/g, \"\");\r\n\r\n if (cnpj.length !== 14) return false;\r\n\r\n if (/^(\\d)\\1{13}$/.test(cnpj)) return false;\r\n\r\n let sum = 0;\r\n let weight = 5;\r\n for (let i = 0; i < 12; i++) {\r\n sum += parseInt(cnpj.charAt(i)) * weight;\r\n weight = weight === 2 ? 9 : weight - 1;\r\n }\r\n let remainder = sum % 11;\r\n let digit1 = remainder < 2 ? 0 : 11 - remainder;\r\n\r\n sum = 0;\r\n weight = 6;\r\n for (let i = 0; i < 13; i++) {\r\n sum += parseInt(cnpj.charAt(i)) * weight;\r\n weight = weight === 2 ? 9 : weight - 1;\r\n }\r\n remainder = sum % 11;\r\n let digit2 = remainder < 2 ? 0 : 11 - remainder;\r\n\r\n return (\r\n digit1 === parseInt(cnpj.charAt(12)) && digit2 === parseInt(cnpj.charAt(13))\r\n );\r\n};\r\n\r\n// Validation of phone number in Brazil\r\nexport const validatePhoneBR = (\r\n phone: string,\r\n requireCountryCode: boolean = false\r\n): boolean => {\r\n const countryCodeRegex = requireCountryCode ? \"(\\\\+55|55)\" : \"(\\\\+55|55)?\";\r\n const regex = new RegExp(\r\n `^${countryCodeRegex}\\\\s?\\\\d{2}\\\\s?\\\\d{4,5}\\\\s?\\\\d{4}$`\r\n );\r\n return regex.test(phone);\r\n};\r\n"],"mappings":";AACO,IAAM,cAAc,CAAC,QAAyB;AACnD,QAAM,IAAI,QAAQ,OAAO,EAAE;AAE3B,MAAI,IAAI,WAAW,GAAI,QAAO;AAC9B,MAAI,eAAe,KAAK,GAAG,EAAG,QAAO;AAErC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,WAAO,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK;AAAA,EACzC;AACA,MAAI,YAAa,MAAM,KAAM;AAC7B,MAAI,cAAc,MAAM,cAAc,GAAI,aAAY;AACtD,MAAI,cAAc,SAAS,IAAI,OAAO,CAAC,CAAC,EAAG,QAAO;AAElD,QAAM;AACN,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,WAAO,SAAS,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK;AAAA,EACzC;AACA,cAAa,MAAM,KAAM;AACzB,MAAI,cAAc,MAAM,cAAc,GAAI,aAAY;AACtD,MAAI,cAAc,SAAS,IAAI,OAAO,EAAE,CAAC,EAAG,QAAO;AAEnD,SAAO;AACT;AAGO,IAAM,eAAe,CAAC,SAA0B;AACrD,SAAO,KAAK,QAAQ,OAAO,EAAE;AAE7B,MAAI,KAAK,WAAW,GAAI,QAAO;AAE/B,MAAI,eAAe,KAAK,IAAI,EAAG,QAAO;AAEtC,MAAI,MAAM;AACV,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,WAAO,SAAS,KAAK,OAAO,CAAC,CAAC,IAAI;AAClC,aAAS,WAAW,IAAI,IAAI,SAAS;AAAA,EACvC;AACA,MAAI,YAAY,MAAM;AACtB,MAAI,SAAS,YAAY,IAAI,IAAI,KAAK;AAEtC,QAAM;AACN,WAAS;AACT,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,WAAO,SAAS,KAAK,OAAO,CAAC,CAAC,IAAI;AAClC,aAAS,WAAW,IAAI,IAAI,SAAS;AAAA,EACvC;AACA,cAAY,MAAM;AAClB,MAAI,SAAS,YAAY,IAAI,IAAI,KAAK;AAEtC,SACE,WAAW,SAAS,KAAK,OAAO,EAAE,CAAC,KAAK,WAAW,SAAS,KAAK,OAAO,EAAE,CAAC;AAE/E;AAGO,IAAM,kBAAkB,CAC7B,OACA,qBAA8B,UAClB;AACZ,QAAM,mBAAmB,qBAAqB,eAAe;AAC7D,QAAM,QAAQ,IAAI;AAAA,IAChB,IAAI,gBAAgB;AAAA,EACtB;AACA,SAAO,MAAM,KAAK,KAAK;AACzB;","names":[]}