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

Responder a