ayuda regex nuevamente

46 views
Skip to first unread message

Gabriel Ernesto Gutierrez Añez

unread,
Jan 14, 2009, 6:17:45 PM1/14/09
to javamaniaco
Tengo que validar el RFC es como un identificador aqui en mexico.

Para personas fisicas (PF) o personas fisicas con actividad emrpesarial (PFAE) el RFC consta de 4 letras 6 numeros y opcional 3 caracteres (letras o numeros) pero no mas de 3 y no menos de 3
dando una longitud total de 10 o 13

eg. correcto

GUAG850514     ó GUAG850514A1B

eg. Incorrecto

//no cumple con 4 letras iniciales,    No cumple con los ultimos 3
GUA850514     ó GUAG850514A1

pero para personas morales

en lugar de 4 letras pueden ser 3, esdecir, 3 letras, 6 numeros y opcional 3 caracteres (letras o numeros) y no menos de 3, dando una longitud de 9 u 12 carcteres

para esto tengo un if-else que me indica que tipo de regex voy a aplicar pero no me funciona para persona moral,

eg. correcto

GUA850514     ó GUA850514A1B

eg. Incorrecto

//no cumple con 3 letras iniciales,    No cumple con los ultimos 3
GUAG850514     ó GUA850514A1

este es mi regex para personas fisicas y personas fisicas con actividad empresarial

[a-zA-Z]{4}([0-9]{6})([a-zA-Z0-9]{3})?$

y para persona moral es

[a-zA-Z]{3}([0-9]{6})([a-zA-Z0-9]{3})?$

Lo que cambia es el 4 por el 3

alguna idea de pq no funciona?

todo se hace con javascriot aqui te paso el codigo de la funcion


function isRFC(rfc, tipoBuro){
        //asume que es PF o PFAE
        var reg = new RegExp("[a-zA-Z]{4}([0-9]{6})([A-Z0-9]{3})?$");
        if(tipoBuro == tipoBuroPM){
            //se cambia para PM
            reg = new RegExp("[a-zA-Z]{3}([0-9]{6})([a-zA-Z0-9]{3})?$");
        }
        return reg.test(rfc);
}


thx

--
_____________________
Ing. Gabriel Gutiérrez
0052 1 811 071 7213
Monterrey, México

Stankovic

unread,
Jan 18, 2009, 5:34:25 PM1/18/09
to javamaniaco
Una pregunta ¿no te funciona para PM ? o no funciona en ningun caso.

Si solo falla con PM, prueba a ver si usando 2 variables regex

Es decir

var regexPM=new RegExp("[a-zA-Z]{3}([0-9]{6})([A-Z0-9]{3})?$");
var regexOtros=new RegExp("[a-zA-Z]{4}([0-9]{6})([A-Z0-9]{3})?$");

y luego devuelves el .test que te interese

Si fuese que no furrula en ningun caso pensamos otra solucion




On 15 ene, 00:17, Gabriel Ernesto Gutierrez Añez

Gabriel Ernesto Gutierrez Añez

unread,
Jan 19, 2009, 10:01:59 AM1/19/09
to javam...@googlegroups.com
ya se soluciono, el regex final fue:

^[a-zA-Z]{3,4}[0-9]{6}([a-zA-Z0-9]{3})?$

funciona para ambos casos.

gracias,

2009/1/18 Stankovic <stank...@gmail.com>
Reply all
Reply to author
Forward
0 new messages