Validar CUI del DPI
Script de ejemplo de cómo validar el Código Único de Identificación (CUI) impreso en el Documento Personal de Identificación (DPI) de los ciudadanos de Guatemala.
HTML
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<div class="container">
<h1>Validación de CUI <small>utilizado en Guatemala</small></h1>
<p>El <strong>Código Único de Identificación</strong> (CUI) es el número con el que se identifican los ciudadados en Guatemala y se ecuentra impreso en su <strong>Documento Personal de Identificación</strong> (DPI).</p>
<blockquote><p class="small">El presente formulario permite <em>verificar si el CUI escrito es válido</em>, sin embargo la validez del número no implica que exista un ciudadano que se identifique con dicho número.</p></blockquote>
<div class="row">
<div class="col-md-12">
<form role="form">
<div class="form-group has-feedback">
<label for="cui" class="control-label">CUI:</label>
<input type="text" class="form-control" id="cui" placeholder="Ingrese CUI" />
<span class="glyphicon form-control-feedback"></span>
</div>
</form>
</div>
</div>
</div>
JavaScript
function cuiIsValid(cui) {
var console = window.console;
if (!cui) {
console.log("CUI vacío");
return true;
}
var cuiRegExp = /^[0-9]{4}\s?[0-9]{5}\s?[0-9]{4}$/;
if (!cuiRegExp.test(cui)) {
console.log("CUI con formato inválido");
return false;
}
cui = cui.replace(/\s/, '');
var depto = parseInt(cui.substring(9, 11), 10);
var muni = parseInt(cui.substring(11, 13));
var numero = cui.substring(0, 8);
var verificador = parseInt(cui.substring(8, 9));
// Se asume que la codificación de Municipios y
// departamentos es la misma que esta publicada en
// http://goo.gl/EsxN1a
// Listado de municipios actualizado segun:
// http://goo.gl/QLNglm
// Este listado contiene la cantidad de municipios
// existentes en cada departamento para poder
// determinar el código máximo aceptado por cada
// uno de los departamentos.
var munisPorDepto = [
/* 01 - Guatemala tiene: */ 17 /* municipios. */,
/* 02 - El Progreso tiene: */ 8 /* municipios. */,
/* 03 - Sacatepéquez tiene: */ 16 /* municipios. */,
/* 04 - Chimaltenango tiene: */ 16 /* municipios. */,
/* 05 - Escuintla tiene: */ 13 /* municipios. */,
/* 06 - Santa Rosa tiene: */ 14 /* municipios. */,
/* 07 - Sololá tiene: */ 19 /* municipios. */,
/* 08 - Totonicapán tiene: */ 8 /* municipios. */,
/* 09 - Quetzaltenango tiene: */ 24 /* municipios. */,
/* 10 - Suchitepéquez tiene: */ 21 /* municipios. */,
/* 11 - Retalhuleu tiene: */ 9 /* municipios. */,
/* 12 - San Marcos tiene: */ 30 /* municipios. */,
/* 13 - Huehuetenango tiene: */ 32 /* municipios. */,
/* 14 - Quiché tiene: */ 21 /* municipios. */,
/* 15 - Baja Verapaz tiene: */ 8 /* municipios. */,
/* 16 - Alta Verapaz tiene: */ 17 /* municipios. */,
...