public function checkCpf(text:String):Boolean{
var CPF:String = new String(text);
var aux:Number = new Number();
var posicao:Number = new Number();
var i:Number = new Number(-1);
var soma:Number = new Number();
var dv:Number = new Number();
var dvInformado:Number = new Number();
var digito:Array = new Array();
// Retira os dígitos formatadores de CPF '.' e '-', caso existam.
i = CPF.indexOf('.');
if (i > 0) {
CPF = removerMascara(text, "999.999.999-99");
}
//verifica CPFs manjados
switch (CPF) {
case '0':
case '00':
case '000':
case '0000':
case '00000':
case '000000':
case '0000000':
case '00000000':
case '000000000':
case '0000000000':
// case '00000000000':
case '11111111111':
case '22222222222':
case '33333333333':
case '44444444444':
case '55555555555':
case '66666666666':
case '77777777777':
case '88888888888':
case '99999999999':
return ("Número do CPF inválido!");
break;
}
// Início da validação do CPF.
/* Retira do número informado os dois últimos dígitos */
dvInformado = parseInt(CPF.substr(9, 2));
/* Desmembra o número do CPF no array digito */
for (i = 0; i <= 8; i++) {
digito[i] = CPF.substr(i, 1);
}
/* Calcula o valor do 10o. digito de verificação */
posicao = 10;
soma = 0;
for (i = 0; i <= 8; i++) {
soma = soma + digito[i] * posicao;
posicao--;
}
digito[9] = soma % 11;
if (digito[9] < 2) {
digito[9] = 0;
} else {
digito[9] = 11 - digito[9];
}
/* Calcula o valor do 11o. digito de verificação */
posicao = 11;
soma = 0;
for (i = 0; i <= 9; i++) {
soma = soma + digito[i] * posicao;
posicao--;
}
digito[10] = soma % 11;
if (digito[10] < 2) {
digito[10] = 0;
} else {
digito[10] = 11 - digito[10];
}
dv = digito[9] * 10 + digito[10];
/* Verifica se o DV calculado é igual ao informado */
if (dv != dvInformado) {
return false;
}
return true;
}
2010/9/1 Diego <[email protected]>
> Pessoal, sei que isso já foi amplamente discutido aqui no grupo mas
> não achei um que atenda a minha necessidade.
>
> Alguém teria um exemplo de validação de CPF que faz os cálculos se
> ele é valido ou não?
>
> Grato.
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
--
-----------------------------------------------
Cel. 83 8790.1304
[email protected]
www.paulloestevam.com.br
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev