Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Expresiones Regulares y Validación

Estas en el tema de Expresiones Regulares y Validación en el foro de Javascript en Foros del Web. Buen Día Tengo un formulario que es validado por una funcion de Java, todo funciona muy bien para validar campos de texto como el CURP ...
  #1 (permalink)  
Antiguo 04/07/2014, 22:20
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Expresiones Regulares y Validación

Buen Día

Tengo un formulario que es validado por una funcion de Java, todo funciona muy bien para validar campos de texto como el CURP por ejemplo, pero quiero validar algo mas específico

Cita:
Dos letras (minusculas o mayusculas), 8 números, un guíón, 9 letras (minusculas o mayusculas), un punto, y 3 letras (minusculas o mayusculas):

PP12345678-ABCDEFGHI.ABC
No se como hacer que mi funcion valide eso correctamente

Este es el codigo de mi funcion que valida CORRECTAMENTE el CURP y otras cosas

Código:
if(!document.form1.Curp.value.match(/[a-zA-Z]{4,4}[0-9]{6}[a-zA-Z]{6,6}[0-9]{2}/)){
alert("Favor de Verificar el CURP");
document.form1.Curp.focus();
Este es el código que tengo y NO FUNCIONA

Código:
if(!document.form1.archivos5.value.match(/[a-zA-Z]{2,2}[0-9]{8}[\.]{1}[a-zA-Z]{9,9}[\.]{1}[a-zA-Z]{3,3}/)){
alert("Favor de verificar la tu archivo");
Agradesco su ayuda
  #2 (permalink)  
Antiguo 04/07/2014, 23:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Expresiones Regulares y Validación

La expresión regular no es la que precisas. Debe ser así:

Código Javascript:
Ver original
  1. var regexp = /[a-z]{2}[\d]{8}\-[a-z]{9}\.[a-z]{3}/gi,
  2.     foo = "PP12345678-ABCDEFGHI.ABC",
  3.     bar = "sv3425sdaf987sdf987sd";
  4.  
  5. console.log(regexp.test(foo)); //true
  6. console.log(regexp.test(bar)); //false

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 06/07/2014, 16:10
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Respuesta: Expresiones Regulares y Validación

Gracias, me ayudo pero asi quedo la validación como quería:
Código:
if(!document.form1.archivos5.value.match(/[a-zA-Z]{2,2}[0-9]{8}[\-][a-zA-Z]{9,9}[\.][a-zA-Z]{3,3}/)){
alert("Favor de verificar la tu archivo");
  #4 (permalink)  
Antiguo 06/07/2014, 17:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Expresiones Regulares y Validación

El modificador de contexto i se utiliza para que la búsqueda no haga diferencia entre mayúsculas y minúsculas. La expresión \d se utiliza para hacer referencia a todos los números. Si deseas que el máximo y mínimo de caracteres sea el mismo, basta con que coloques una vez el número en cuestión entre paréntesis, colocarlo dos veces separado por una coma es innecesario. No era necesario que hagas esto [\-] pues no tiene sentido agrupar un solo caracter, los corchetes tienen otra finalidad. Por cierto, lo más adecuado para este caso es usar el método test pues solo deseas saber si se produjo la coincidencia del formato con la expresión regular, no deseas obtener un array con las coincidencias que es lo que produce el método match.

Tienes que leer más, no te conformes con lo poco que alcancemos a explicarte acá y por favor, nunca te limites a copiar y pegar el código que encuentres o te proporcionen, analízalo hasta entenderlo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: expresiones, formulario, funcion, regulares
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:01.