tag:blogger.com,1999:blog-2692314905641741323.post3921999517938718381..comments2023-08-28T04:55:30.515-06:00Comments on Javeros Anónimos: Expresiones regularesαlfahttp://www.blogger.com/profile/10848161427265763834noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-2692314905641741323.post-63180397158555673632013-08-01T11:00:16.014-05:002013-08-01T11:00:16.014-05:00Buen Trabajo.Buen Trabajo.Anonymoushttps://www.blogger.com/profile/11354033047690011591noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-74108418673343802412012-06-22T15:19:46.576-05:002012-06-22T15:19:46.576-05:00Las expresion regular para el curp del link dado:
...Las expresion regular para el curp del link dado:<br />ftp://ftp2.sat.gob.mx/asistencia_servicio_ftp/publicaciones/cfd/iedu.pdf <br /><br />No esta del todo bien, hay que considerar los meses y los dias, ya que acepta meses de 13-19 y dias de 32-39, como sabemos eso no exite. <br /><br />Deberian de tomarlo en cuenta para su codigo. GraciasAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-62277380970018105992011-11-08T12:11:31.430-06:002011-11-08T12:11:31.430-06:00Gracias por colaborar con esta informaciòn actuali...Gracias por colaborar con esta informaciòn actualizare el Post con los datos que han aportado.<br /><br />Saludoss!αlfahttps://www.blogger.com/profile/10848161427265763834noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-20053124367389571992011-11-08T12:06:12.554-06:002011-11-08T12:06:12.554-06:00Según el mismo SAT las expresiones regulares corre...Según el mismo SAT las expresiones regulares correctas para el RFC y CURP en México son las siguientes:<br /><br />CURP: [A-Z][A,E,I,O,U,X][A-Z]{2}[0-9]{2}[0-1][0-9][0-3][0-9][M,H][A-Z]{2}[B,C,D,F,G,H,J,K,L,M,N,Ñ,P,Q,R,S,T,V,W,X,Y,Z]{3}[0-9,A-Z][0-9]<br /><br />RFC: [A-Z,Ñ,&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z,0-9]?[A-Z,0-9]?[0-9,A-Z]?<br /><br />Lo pueden corroborar en: ftp://ftp2.sat.gob.mx/asistencia_servicio_ftp/publicaciones/cfd/iedu.pdf<br /><br />En la página 3Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-63864462233714133342010-04-13T10:21:07.819-05:002010-04-13T10:21:07.819-05:00Que tal wvillegasm! Gracias por tus comentarios va...Que tal wvillegasm! Gracias por tus comentarios vamos a validar tu codigo y crearemos un Post al respecto ¿Tienes algun link donde contactarte? Para agregarlo en el postαlfahttps://www.blogger.com/profile/10848161427265763834noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-67200384558025901922010-03-16T09:38:03.129-06:002010-03-16T09:38:03.129-06:00Tabla de Caracter - Valor
Para calcular el Digito ...Tabla de Caracter - Valor<br />Para calcular el Digito verificador<br /><br />caracter valor<br />-------- ------<br />& 24<br />0 0<br />1 1<br />2 2<br />3 3<br />4 4<br />5 5<br />6 6<br />7 7<br />8 8<br />9 9<br />A 10<br />B 11<br />C 12<br />D 13<br />E 14<br />F 15<br />G 16<br />H 17<br />I 18<br />J 19<br />K 20<br />L 21<br />M 22<br />N 23<br />O 25<br />P 26<br />Q 27<br />R 28<br />S 29<br />T 30<br />U 31<br />V 32<br />W 33<br />X 34<br />Y 35<br />Z 36willyhttps://www.blogger.com/profile/06901759079995115310noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-84022207489979772132010-03-16T09:37:41.165-06:002010-03-16T09:37:41.165-06:00/**
/* Metodo para Calcular el Digito Verificador.../**<br /> /* Metodo para Calcular el Digito Verificador del RFC<br /> */<br /> private boolean calculaDigito(String aRfcValidar, int atipoCliente, int alongitudRfc) {<br /> boolean regresoDigito = false;<br /> //addTrace("Inicio Digito Verificador " + regresoDigito );<br /> String digitoRFC = "";<br /> //String digitoCalculo = "";<br /><br /> int posicion = 1;<br /> int wCalculo = 0;<br /> int wPaso =0;<br /> int wDigito =0;<br /><br /> if (atipoCliente == 2) {<br /> wCalculo = 37 * 13;<br /> }<br /> <br /> digitoRFC = String.valueOf(aRfcValidar.substring(alongitudRfc - 1, alongitudRfc));<br /><br /> // Calculo del Digito Verificador<br /> CharacterIterator itRfc = new StringCharacterIterator(aRfcValidar.substring(0, alongitudRfc - 1));<br /> for (char chRfc = itRfc.first(); chRfc != CharacterIterator.DONE; chRfc = itRfc.next()) {<br /> <br /> // Buscar el valor del digito en la Tabla de Caracter - Valor <br /> int valor = ..... <br /> <br /> wCalculo += valor * (alongitudRfc + 1 - posicion);<br /> <br /> posicion ++;<br /> }<br /> <br /> wPaso = (wCalculo/11);<br /> wPaso = wPaso * 11;<br /> wDigito = wCalculo - wPaso;<br /> if ( wDigito == 0 )<br /> digitoCalculo = "0";<br /> else {<br /> if ( (11 - wDigito ) == 10 ) <br /> digitoCalculo = "A";<br /> else<br /> digitoCalculo = String.valueOf(11 - wDigito);<br /> }<br /> <br /> if ( digitoCalculo.equals(digitoRFC) ) {<br /> regresoDigito = true;<br /> }<br /> else {<br /> //throw new Exception("Error en el Digito Verificador del RFC.. Digito Valido " + digitoCalculo);<br /> return false;<br /> }<br /> //addTrace("Digito Verificador " + regresoDigito );<br /> return regresoDigito;<br /> } // calculaDigito(String aRfcValidar, int atipoCliente)willyhttps://www.blogger.com/profile/06901759079995115310noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-29337107253084765632010-03-16T09:37:18.078-06:002010-03-16T09:37:18.078-06:00/**
* Metodo para Validar la fecha del RFC
*/
p.../**<br /> * Metodo para Validar la fecha del RFC<br /> */<br /> private boolean validaFecha(String aFechaRfc) {<br /> boolean regresoFecha = false;<br /> int anioFecha = 0;<br /> int mesFecha = 0;<br /> int diaFecha = 0;<br /> <br /> // Validacion de los Caracteres de la fecha (Deben ser Digitos)<br /> CharacterIterator itFecha = new StringCharacterIterator(aFechaRfc);<br /> for (char chFecha = itFecha.first(); chFecha != CharacterIterator.DONE; chFecha = itFecha.next()) {<br /> if ( Character.isDigit(chFecha)) {<br /> regresoFecha = true;<br /> } else {<br /> return false;<br /> }<br /> }<br /> <br /> if (regresoFecha) {<br /> anioFecha = Integer.parseInt(aFechaRfc.substring(0, 2));<br /> mesFecha = Integer.parseInt(aFechaRfc.substring(2, 4));<br /> diaFecha = Integer.parseInt(aFechaRfc.substring(4,6));<br /> <br /> // Validacion de la Fecha (Año, Mes y Dia)<br /> if ( (anioFecha >= 0 && anioFecha < 100) && (mesFecha > 0 && mesFecha < 13) && (diaFecha > 0 && diaFecha < 32) ) {<br /> regresoFecha = true;<br /> }<br /> else {<br /> return false;<br /> }<br /> }<br /> return regresoFecha;<br /> } // validaFecha(String aFechaRfc)<br /> <br /> /**<br /> * Metodo para Validar la Homoclave del RFC<br /> */<br /> private boolean validaHomoclave(String ahomoClave) {<br /> boolean regresoHomoclave = false;<br /> // Validacion de los Caracteres de la Homo Clave<br /> CharacterIterator itHomoClave = new StringCharacterIterator(ahomoClave);<br /> for (char chHomoClave = itHomoClave.first(); chHomoClave != CharacterIterator.DONE; chHomoClave = itHomoClave.next()) {<br /> if ( Character.isDigit(chHomoClave) || Character.isLetter(chHomoClave) || String.valueOf(chHomoClave).equals("&")) {<br /> regresoHomoclave = true;<br /> }<br /> else{<br /> return false;<br /> }<br /> }<br /> return regresoHomoclave;<br /> } // validaHomoclave(String ahomoClave)willyhttps://www.blogger.com/profile/06901759079995115310noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-50323160814421550662010-03-16T09:36:48.929-06:002010-03-16T09:36:48.929-06:00public boolean verificaRfc(String rfcValidar, int ...public boolean verificaRfc(String rfcValidar, int tipoCliente) throws VSException {<br /> // Declaracion de Variables<br /> boolean regreso = false;<br /> String fechaRfc = "";<br /> String homoClave = "";<br /> String mensajeError = "";<br /> if(rfcValidar == null ){<br /> throw new VSException("La Longitud del RFC no es Valida");<br /> }<br /> int longitudRfc = rfcValidar.trim().length();<br /> <br /> if(longitudRfc == 0 || (tipoCliente == 1 && longitudRfc != 13) || (tipoCliente == 2 && longitudRfc != 12) ){<br /> throw new VSException("La Longitud del RFC no es Valida");<br /> }<br /> <br /> if(tipoCliente == 0){<br /> throw new VSException("El Tipo de Cliente no existe");<br /> }<br /> <br /> <br /> char primerCaracter = rfcValidar.charAt(0);<br /> char segundoCaracter = rfcValidar.charAt(1);<br /> char tercerCaracter = rfcValidar.charAt(2);<br /> char cuartoCaracter = rfcValidar.charAt(3);<br /> fechaRfc = rfcValidar.substring(longitudRfc - 9, longitudRfc - 3);<br /> homoClave = rfcValidar.substring(longitudRfc - 3, longitudRfc);<br /> <br /> // Validacion para los tres Primeros Caracteres del RFC (Deben ser Letras)<br /> if ( ( Character.isLetter(primerCaracter) || String.valueOf(primerCaracter).equals("&") ) <br /> && ( Character.isLetter(segundoCaracter) || String.valueOf(segundoCaracter).equals("&") )<br /> && ( Character.isLetter(tercerCaracter) || String.valueOf(tercerCaracter).equals("&") ) ) {<br /><br /> // Validacion del Cuarto Caracter del RFC<br /> if ( ( tipoCliente == 1 && ( Character.isLetter(cuartoCaracter) || String.valueOf(cuartoCaracter).equals("&") ))<br /> || tipoCliente == 2 ) {<br /> // Validacion de la Fecha del RFC<br /> if ( validaFecha(fechaRfc) ) {<br /> // Validacion de la Homo Clave del RFC.<br /> if (validaHomoclave(homoClave)) {<br /> if ( calculaDigito(rfcValidar, tipoCliente, longitudRfc)) {<br /> regreso = true;<br /> }<br /> else {<br /> throw new VSException("Error en el Digito Verificador del RFC.. Digito Valido " + digitoCalculo );<br /> }<br /> } // Validacion de la Homo Clave del RFC. <br /> else { <br /> throw new VSException("Error en la Homoclave del RFC ") ;<br /> }<br /> } // Validacion de la fecha del RFC<br /> else {<br /> throw new VSException("Error en los Caracteres de la Fecha del RFC ") ;<br /> }<br /> } // Validacion del Cuarto Caracter del RFC<br /> else {<br /> throw new VSException("Error en los Caracteres del Nombre del RFC");<br /> }<br /> //validaFecha(String aFechaRfc)<br /> } // Validacion para los tres Primeros Caracteres del RFC (Deben ser Letras)<br /> else {<br /> throw new VSException("Error en los Caracteres del Nombre del RFC");<br /> }<br /> return regreso;<br /> } // verificaRfcwillyhttps://www.blogger.com/profile/06901759079995115310noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-19403763499666776172010-03-16T09:36:01.416-06:002010-03-16T09:36:01.416-06:00EL RFC se debe validar:
Persona Física
Longitud d...EL RFC se debe validar:<br /><br />Persona Física<br />Longitud de 13 Caracteres<br />Los primeros 4 digitos deben ser letras A-Z o un &<br />Los siguientes 6 deben ser digitos<br /> - los primeros 2 dígitos deben tener un rango entre 0 a 99 (inclusive)<br /> - los dígitos 3 y 4 deben tener un rango entre 1 a 12 (inclusive)<br /> - los dígitos 5 y 6 debeb tener un rango entre 1 y 31<br /> Tomando estos digitos se puede hacer una validación conviertiendo a una fecha de año-mes-dia. Esto porque un RFC AAAA880230XXX puede pasar la validación. De tal manera que si el sistema puede convertir a fecha entonces se validad que realmente es correcto los 6 digitos del RFC.<br /><br />Los últimos 3 Caracteres se conocen como Homoclave y se calcula:<br /><br />...<br /><br />Mejor les dejo el código..<br />Espero les sirvawillyhttps://www.blogger.com/profile/06901759079995115310noreply@blogger.comtag:blogger.com,1999:blog-2692314905641741323.post-4844354851473918562010-01-12T17:15:08.002-06:002010-01-12T17:15:08.002-06:00Que tal, no estoy seguro de la expresión regular u...Que tal, no estoy seguro de la expresión regular utilizada para RFC, la probé en la siguiente página con esta cadena : VECJ880326XXX y me devuelve una No concordanciaCésar Barragánhttps://www.blogger.com/profile/13413406260274513611noreply@blogger.com