public static function isCPFValido(ent : String):Boolean{
if (ent.length == 0)
return false;
var i : int;
var ok : Boolean = false;
var aux : String = ent.charAt(0);
for(i=0;i<ent.length;i++){
if ( aux !== ent.charAt(i) ){
ok = true;
break;
}
}
if ( !ok )
return false;
//criamos arrays dos pesos
var Peso1 : Array = [10, 9, 8, 7, 6, 5, 4, 3, 2];
var Peso2 : Array = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];
var cpfVal:String = ent;
var j : int;
var digito1 : Number;
var digito2 : Number;
// criamos as variáveis que nos auxiliarão no cálculo dos dígitos verificadores
var soma1:Number = new Number ();
var resto1:Number = new Number ();
var soma2:Number = new Number ();
var resto2:Number = new Number ();
// utilizamos o for com o incremento i ( i++ )
for (i = 0; i < Peso1.length; i++)
soma1 += new Number(cpfVal.charAt(i)) * Peso1[i];
// o cálculo do resto é feito utilizando o operador % ( porcentagem )
// que retorna o resto da divisão da soma por 11
resto1 = soma1 % 11;
// criamos a condicão para o caso do resultado ser menor ou igual a 1
if (resto1 <= 1) {
// se for o digito verificador é igual a 0 ( zero )
digito1 = 0;
} else {
// senão é igual a 11 menos o resto
digito1 = 11 - resto1;
}
// agora o cálculo do segundo dígito que segue o mesmo padrão anterior
for (j = 0; j < Peso2.length; j++)
soma2 += new Number(cpfVal.charAt (j)) * Peso2[j];
resto2 = soma2 % 11;
if (resto2 <= 1) {
digito2 = 0;
} else {
digito2 = 11 - resto2;
}
// chegamos então a nossa condição final
// se o décimo digito - cpfVal.charAt(9) - for igual ( o símbolo == )
// ao dígito verificador calculado ou ...
// se o décimo digito - cpfVal.charAt(10) - for igual ao dígito verificador calculado ou ...
// o tamanho da número digitado for igual de onze algarismos
// lembrando que o charAt(9) indica a décima "casa" ( posição )
// porque a primeira "casa" é sempre 0 ( zero )
if (new Number(cpfVal.charAt (9)) == digito1 && new Number(cpfVal.charAt (10)) == digito2 && cpfVal.length == 11) {
// se todas as condições estiverem ok
// você pode acrescentar aqui outras ações do tipo ir para algum frame
// enviar as informações para o servidor
// etc
//trace ( "CPF Válido" );
return true;
} else {
// senão ...
//trace ( "CPF Inválido" );
return false;
}
}
Vitor Yudi Hansen