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.