Foros del Web » Programando para Internet » Javascript »

Validación del RFC

Estas en el tema de Validación del RFC en el foro de Javascript en Foros del Web. Hola: En México para pagar impuestos es necesario tener una Registro Federal de Contribuyentes. Tengo un formulario para validar la entrada de este campo con ...
  #1 (permalink)  
Antiguo 04/07/2004, 21:39
Avatar de susaniux  
Fecha de Ingreso: diciembre-2002
Mensajes: 21
Antigüedad: 21 años, 5 meses
Puntos: 0
Validación del RFC

Hola:

En México para pagar impuestos es necesario tener una Registro Federal de Contribuyentes.

Tengo un formulario para validar la entrada de este campo con una expresión regular.

Mi validación es muy sencilla porque realmente no valida tan cual las reglas de generacion de un RFC, sólo trato de validar lo elemental.

Existen dos regimenes fiscales: Personas Físicas y Personas Morales

Las personas físicas su RFC esta compuesto de 4 caracteres alfanuméricos, mas 6 numeros y 3 carateres nuevamente alfanuméicos
Ejemplo: AASS810823FGD

La diferencia con las personas morales es que en vez de ser 4 caracteres alfanumericos al inicio de la cadena son un espacio en blanco y luego 3 caracteres.
Ejemplo: ' 'ASS810802FGD

El caso es que cualquier de las dos formas deben ser un total de 13 caracteres.

Para validar esta pequeña regla utilizo la siguiente expresion regular(Yo se que no es la mejor hecha pero se no se mucho de las expresiones regulares)

^(([A-Z]|[a-z]|\s){1})(([A-Z]|[a-z]){3})([0-9]{6})((([A-Z]|[a-z]|[0-9]){3}))


Y realizo la siguiente función en javascript para validar mi cadena que recojo de la caja de texto.

Código:
function ValidaRfc(rfcStr) {
	var strCorrecta
	if (rfcStr.length == 12)
	{
		strCorrecta = ' ' + rfcStr;
	}
	else
	{
		strCorrecta = rfcStr;
	}
	var valid = '^(([A-Z]|[a-z]|\s){1})(([A-Z]|[a-z]){3})([0-9]{6})((([A-Z]|[a-z]|[0-9]){3}))';
	var validRfc=new RegExp(valid);
	var matchArray=strCorrecta.match(validRfc);
	if (matchArray==null) {
		alert('Cadena:' + strCorrecta);
		return;
		return false;
	}
	else
	{
		alert('Cadena:' + strCorrecta);
		return true;
	}
	
}

Lo que intento hacer es recoger la cadena y validar si es el tamaño es igual a 12 anteponerle al inicio un espacio en blanco(Porque logicamente que los usuarios de mi formulario no van a meter el espacio en blanco), y evaluar mi expresión.

El caso de que sean 13 caracteres evaluo directamente la expresión.

Mi problema es que cuando es el primer caso no funciona mi validacíon, pensaba que de alguna manera la cadena no se le concatenaba el espacio en blanco al inicio, que de alguna manera tal vez no se reconocia de esa manera la cadena. Per no la mando imrpimir con un alert y efectivamente si trae un espacio en blanco al inicio.

Posteriormente pense que el problema era mi expresion regular, pero entre a la pagina http://www.regexplib.com/RETester.aspx, para validarla y realmente si funciona.

Entonces no entiendo que es lo que estoy haciendo mal en esta validación.

Espero que me puedan ayudar, relamente se los agradeceré mucho.

__________________
:-P*****;-)
  #2 (permalink)  
Antiguo 11/07/2004, 23:23
Avatar de susaniux  
Fecha de Ingreso: diciembre-2002
Mensajes: 21
Antigüedad: 21 años, 5 meses
Puntos: 0
Hola.

Sigo con el problema, de plano no ven el error????
__________________
:-P*****;-)
  #3 (permalink)  
Antiguo 12/07/2004, 01:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola susaniux:

Por delante del return false en la validación, tienes un "return" aislado que hace las veces de "return true"

Por lo demás no tengo idea de esos números, y las expresiones regulares las controlo en el más bajo de los niveles...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 10/05/2009, 16:10
Avatar de Trilan  
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Validación del RFC

Le hice algunas modificaciones. Espero y te sirva.

Código HTML:
<script language="JavaScript">

function ValidaRfc(rfcStr) {
	var strCorrecta;
	strCorrecta = rfcStr;	
	if (rfcStr.length == 12){
	var valid = '^(([A-Z]|[a-z]){3})([0-9]{6})((([A-Z]|[a-z]|[0-9]){3}))';
	}else{
	var valid = '^(([A-Z]|[a-z]|\s){1})(([A-Z]|[a-z]){3})([0-9]{6})((([A-Z]|[a-z]|[0-9]){3}))';
	}
	var validRfc=new RegExp(valid);
	var matchArray=strCorrecta.match(validRfc);
	if (matchArray==null) {
		alert('Cadena incorrectas');

		return false;
	}
	else
	{
		alert('Cadena correcta:' + strCorrecta);
		return true;
	}
	
}

</script>

<input name="rfc" type="text" class="txtbox" id="rfc" size="24" onblur="ValidaRfc(this.value)" /> 
  #5 (permalink)  
Antiguo 28/05/2012, 12:57
 
Fecha de Ingreso: mayo-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Respuesta: Validación del RFC

tssssss!! q buen post!!
Trilan, muxas grax!!
te la sabes!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:40.