Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. function validateCNPJ(cnpj) {
  2. cnpj = cnpj.replace(/[^\d]+/g,'');
  3. if (cnpj.length != 14) return false;
  4. // Remove known invalid CNPJs
  5. if (cnpj === "00000000000000" ||
  6. cnpj === "11111111111111" ||
  7. cnpj === "22222222222222" ||
  8. cnpj === "33333333333333" ||
  9. cnpj === "44444444444444" ||
  10. cnpj === "55555555555555" ||
  11. cnpj === "66666666666666" ||
  12. cnpj === "77777777777777" ||
  13. cnpj === "88888888888888" ||
  14. cnpj === "99999999999999") return false;
  15. // Validate Blocks
  16. const blocksDivision = cnpj.length - 2
  17. const headBlock = cnpj.substring(0,blocksDivision);
  18. const tailBlock = cnpj.substring(blocksDivision);
  19. let sum = 0;
  20. let pos = blocksDivision - 7;
  21. for (i = blocksDivision; i >= 1; i--) {
  22. sum += headBlock.charAt(blocksDivision - i) * pos--;
  23. if (pos < 2) pos = 9;
  24. }
  25. let validationCheck = sum % 11 < 2 ? 0 : 11 - sum % 11;
  26. if (validationCheck != tailBlock.charAt(0)) return false;
  27. blocksDivision = blocksDivision + 1;
  28. headBlock = cnpj.substring(0,blocksDivision);
  29. sum = 0;
  30. pos = blocksDivision - 7;
  31. for (i = blocksDivision; i >= 1; i--) {
  32. sum += headBlock.charAt(blocksDivision - i) * pos--;
  33. if (pos < 2) pos = 9;
  34. }
  35. validationCheck = sum % 11 < 2 ? 0 : 11 - sum % 11;
  36. if (validationCheck != tailBlock.charAt(1)) return false;
  37. return true;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement