br-validations
Version:
A library of validations applicable to several Brazilian data like I.E., CNPJ, CPF and others
27 lines (20 loc) • 607 B
JavaScript
var PIS = {};
PIS.validate = function(pis) {
pis = pis.replace(/[^\d]+/g,'');
var r = /^(0{11}|1{11}|2{11}|3{11}|4{11}|5{11}|6{11}|7{11}|8{11}|9{11})$/;
if (!pis || pis.length !== 11 || r.test(pis)) {
return false;
}
var pisi = pis.substring(0,10);
var pisd = pis.substring(10);
function calculateDigit(pis){
var p = [3,2,9,8,7,6,5,4,3,2];
var s = 0;
for(var i = 0; i <= 9; i++){
s += parseInt(pis.charAt(i)) * p[i];
}
var r = 11 - (s%11);
return (r === 10 || r === 11) ? 0 : r;
}
return Number(pisd) === calculateDigit(pisi);
};