PageSourceSearch

https://boletopolis.com/javascripts/libraries/identidad/identidad.js

js boletopolis.com collected 2026-09-25 05:04:18 UTC 2,561 bytes, 66 lines download raw bytes

1window.validadorIdentidad = {
2   CURP: function (curp) {
3      var re = /^([A-Z][AEIOUX][A-Z]{2}\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])[HM](?:AS|B[CS]|C[CLMSH]|D[FG]|G[TR]|HG|JC|M[CNS]|N[ETL]|OC|PL|Q[TR]|S[PLR]|T[CSL]|VZ|YN|ZS)[B-DF-HJ-NP-TV-Z]{3}[A-Z\d])(\d)$/,
4         validado = curp.match(re);
5
6      if (!validado) //Coincide con el formato general?
7         return false;
8
9      //Validar que coincida el dígito verificador
10      function digitoVerificador(curp17) {
11         //Fuente https://consultas.curp.gob.mx/CurpSP/
12         var diccionario = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ",
13            lngSuma = 0.0,
14            lngDigito = 0.0;
15         for (var i = 0; i < 17; i++)
16            lngSuma = lngSuma + diccionario.indexOf(curp17.charAt(i)) * (18 - i);
17         lngDigito = 10 - lngSuma % 10;
18         if (lngDigito == 10) return 0;
19         return lngDigito;
20      }
21
22      if (validado[2] != digitoVerificador(validado[1]))
23         return false;
24
25      return true; //Validado
26   },
27
28   RFC:function(rfc, aceptarGenerico){
29      var aceptarGenerico = aceptarGenerico || false;
30      var re       = /^([A-ZÑ&]{3,4}) ?(?:- ?)?(\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])) ?(?:- ?)?([A-Z\d]{2})([A\d])$/;
31      var   validado = rfc.match(re);
32
33      if (!validado)  //Coincide con el formato general del regex?
34         return false;
35
36      //Separar el dígito verificador del resto del RFC
37      var digitoVerificador = validado.pop(),
38            rfcSinDigito      = validado.slice(1).join(''),
39            len               = rfcSinDigito.length,
40
41      //Obtener el digito esperado
42            diccionario       = "0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ Ñ",
43            indice            = len + 1;
44      var   suma,
45            digitoEsperado;
46
47      if (len == 12) suma = 0
48      else suma = 481; //Ajuste para persona moral
49
50      for(var i=0; i<len; i++)
51         suma += diccionario.indexOf(rfcSinDigito.charAt(i)) * (indice - i);
52      digitoEsperado = 11 - suma % 11;
53      if (digitoEsperado == 11) digitoEsperado = 0;
54      else if (digitoEsperado == 10) digitoEsperado = "A";
55
56      //El dígito verificador coincide con el esperado?
57      // o es un RFC Genérico (ventas a público general)?
58      if ((digitoVerificador != digitoEsperado)
59      && (!aceptarGenerico || rfcSinDigito + digitoVerificador != "XAXX010101000"))
60         return false;
61      else if (!aceptarGenerico && rfcSinDigito + digitoVerificador == "XEXX010101000")
62         return false;
63      return rfcSinDigito + digitoVerificador;
64   }
65
66}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.