Validation of RNE (National Aliens Registry) or CIE (Alien Identity Card)

Asked

Viewed 1,598 times

2

Does anyone know how I can validate the CIE (Foreign Identity Card) or RNE (National Aliens Registry) number? I believe there are two names.

Language-independent.

1 answer

0

I solved RG / RNE validation and formatting with this code:

function formatarRG(input, teclapres) {
   var numeroRG  = input.value.trim().toUpperCase().replace(/[^\dX]/g, '');
   var numeroRNE = input.value.trim().toUpperCase();

   if (numeroRNE.substring(0, 3) == 'R' || numeroRNE.substring(0, 3) == 'RN' || numeroRNE.substring(0, 3) == 'RNE') {
    input.value = numeroRNE.replace(/^(RNE)(\w)(\d{6})(\w)$/, '$1$2$3$4');
   } else {
    if ((numeroRG.length == 8 || numeroRG.length >= 9) &&
          (numeroRG.substring(0, 8) == '00000000' ||
           numeroRG.substring(0, 8) == '11111111' ||
           numeroRG.substring(0, 8) == '22222222' ||
           numeroRG.substring(0, 8) == '33333333' ||
           numeroRG.substring(0, 8) == '44444444' ||
           numeroRG.substring(0, 8) == '55555555' ||
           numeroRG.substring(0, 8) == '66666666' ||
           numeroRG.substring(0, 8) == '77777777' ||
           numeroRG.substring(0, 8) == '88888888' ||
           numeroRG.substring(0, 8) == '99999999')) {
        alert("ATENÇÃO! Número do RG inválido, digite novamente. ");
        input.value = '';
        input.focus();
        return false;
    } else {
            input.value = (numeroRG.length == 8 ? numeroRG.replace(/^(\d{1,2})(\d{3})(\d{3})$/, '$1.$2.$3') : numeroRG.replace(/^(\d{1,2})(\d{3})(\d{3})([\dX])$/, '$1.$2.$3-$4'));
         if (numeroRG.length >= 9 && !verificaRG(numeroRG)) {
            alert("ATENÇÃO! O dígito verificador do Número do RG está inválido, o correto é "+ RetornarDigitoVerificadorRG(numeroRG));
            input.value = input.value.substring(0, 11) + RetornarDigitoVerificadorRG(numeroRG);
            input.focus();
            return false;
         }
    }
   }
    return input.value;
}

function validarRG(input) {
    var numero  = input.value.trim().toUpperCase();

    if ((numero.substring(0, 3) == 'RNE' && numero.match(/^(RNE)(\w)(\d{6})(\w)$/) == null) ||
          (numero != '' && numero.length < 8) ||
          ((numero != '' && numero.length > 1) &&
           (numero.substring(0, 8) == '00000000' ||
            numero.substring(0, 8) == '11111111' ||
            numero.substring(0, 8) == '22222222' ||
            numero.substring(0, 8) == '33333333' ||
            numero.substring(0, 8) == '44444444' ||
            numero.substring(0, 8) == '55555555' ||
            numero.substring(0, 8) == '66666666' ||
            numero.substring(0, 8) == '77777777' ||
            numero.substring(0, 8) == '88888888' ||
            numero.substring(0, 8) == '99999999'))) {
    alert("ATENÇÃO! Número do RG inválido, digite novamente.");
    input.value = '';
    input.focus();
    return false;
    } else return true;
}

function verificaRG(value) {

    // Regra encontrada no site: https://www.ngmatematica.com/2014/02/como-determinar-o-digito-verificador-do.html

    var numeroRG  = value.trim().toUpperCase();
    var numero    = numeroRG.split("");
    var total     = 0;
    var resto     = 0;
    var digito    = 0;
    var resultado = true;

    if (numeroRG != "") {
    total  = (parseInt(numero[0])*2)+(parseInt(numero[1])*3)+(parseInt(numero[2])*4)+(parseInt(numero[3])*5)+(parseInt(numero[4])*6)+(parseInt(numero[5])*7)+(parseInt(numero[6])*8)+(parseInt(numero[7])*9);
    resto  = total % 11;
    digito = 11 - resto;

    if (numero.length >= 9) {
        if (numero[8] == 'X')
            resultado = (digito == 10);
        else if (numero[8] == '0')
            resultado = (digito == 11);
        else
            resultado = parseInt(numero[8]) == digito;
    }
    } else
        resultado = false;
    return resultado;
}

// No seu HTML 
<label for="colaborador.numeroDoRG.rotulo"><fmt:message key="colaborador.numeroDoRG.rotulo" />:</label>         
<input type="text" tabindex="2" name="colaborador.numeroDoRG" id="colaborador.numeroDoRG" maxlength="12" size="20" class="campo uppercase" onKeyUp="return formatarRG(this, event);" onBlur="return validarRG(this);"/>
<br/>

I hope it helps you...

  • I don’t understand how you differ from RG RNE. It seems to do the same validation for both. Can you give details? Thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.