JavaScript - expresiones regulares

 
Vista:
sin imagen de perfil

expresiones regulares

Publicado por zendi (90 intervenciones) el 11/10/2013 23:43:29
Buenas a todos, estoy por aqui nuevamente sin DESISTIR como me aconsejo Mari Carmen por un post de php,
estoy tratando de validar un campo para apellidos tambien sirve para nombres
ESTE ES EL CODIGO:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
</body>
</html>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- http://www.lawebdelprogramador.com -->
<html>
 <head>
 <title>Validar un apellido</title>
 <script type="text/javascript">
 // Función para validar un Apellido o Nombre 
  function validateApellido(apellido)
  {
 //Creamos un objeto 
 object=document.getElementById(apellido);
 valueForm=object.value;
  //  Patron para el apellido 
  var patron=/^[a-z A-z]{2,16}$/;
    if(valueForm.search(patron)==0)
	{
	 //Apellido correcto Con color azul
	object.style.color="#0033CC";
	 return;
	 }
	  //Apellido incorrecto Con rojo
	 object.style.color="#990000";
	 alert('No puede Escribir Números u otros Caractéres que no sean letras');
 
   } //-->
	</script>
	</head>
	<body>
	<h1>Validar un Apellido
	</h1>
	<p>
	  Código javascript que muestra como validar un Apellido utilizando expresiones regulares con RegExp
	</p><td bgcolor= bgcolor=>
	<p>Introduzca un Apellido: <input type='text' id='apellido' name='apellido' class='' value="" size='30' maxlength='100' title='Apellido' onKeyUp="javascript:validateApellido('apellido')" />
	</p>
	</body>
	</html>

PERO CUANDO COLOCO UNA LETRA ME LANZA EL MENSAJE DE ERROR Y TAMBIEN DENTRO DE ESTE MISMO CUADRO DE DIALOGO JUNTO CON EL ERROR ME SEÑALA ESTO "EVITAR QUE ESTA PAGINA CREE DIALOGOS ADICIONALES" , Y NO DEBIERA YA QUE ES UNA LETRA, TAMPOCOFUNCIONA LA VALIDACION CON LOS NUMEROS U OTROS CARACTERES
SI ALGUIEN PUDIERA AYUDARME. GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

expresiones regulares

Publicado por xve (2100 intervenciones) el 12/10/2013 10:11:22
Hola Zendi, creo que te has liado un poco...

tienes en tu código dos DOCTYPE, dos <HTML>, dos <HEAD>...

Aquí tienes el código que te funciona correctamente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- http://www.lawebdelprogramador.com -->
<html>
<head>
<title>Validar un apellido</title>
<script type="text/javascript">
    // Función para validar un Apellido o Nombre 
    function validateApellido(apellido)
    {
        //Creamos un objeto 
        object=document.getElementById(apellido);
        valueForm=object.value;
        //  Patron para el apellido 
        var patron=/^[a-z]+$/i;
        if(valueForm.search(patron)==0)
        {
            //Apellido correcto Con color azul
            object.style.color="#0033CC";
            return;
        }
        //Apellido incorrecto Con rojo
        object.style.color="#990000";
        alert('No puede Escribir Números u otros Caractéres que no sean letras');
    } //-->
</script>
</head>
<body>
    <h1>Validar un Apellido</h1>
    <p>Código javascript que muestra como validar un Apellido utilizando expresiones regulares con RegExp</p>
    <p>Introduzca un Apellido: <input type='text' id='apellido' name='apellido' class='' value="" size='30' maxlength='100' title='Apellido' onKeyUp="javascript:validateApellido('apellido')" />
    </p>
</body>
</html>

Te comento un poco sobre las expresiones regulares.
{2,16} => indica que tiene que haber entre 2 y 16, si hay 1 o 17 caracteres, dará error.
/^[a-z]+$/i => Solo letras. (+) una o mas veces. (i) ignora mayúsculas y minúsculas.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

expresiones regulares

Publicado por zendi (90 intervenciones) el 12/10/2013 18:46:48
Hola Xve. Si, cometi un error en ese aspecto, bueno funciona a medias, pero hay una cosa cada vez que presiono la barra espaciadora me da el alert('No puede Escribir Números u otros Caractéres que no sean letras') y asimismo tambien cuando cargo el formulario por primera vez y enfoco el input type me da el mensaje tambien. Igualmente al cabo de colocar 6 numeros es cuando tambien arroja el mensaje.
La idea es colocar 2 apellidos y para esto es necesario dar espacio.
Accesé al enlace que me enviaste pero no vi una opcion para espacio en blanco entre palabras. Voy a probar con colocar un espacio en la expresion regular a ver que hace.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

expresiones regulares

Publicado por zendi (90 intervenciones) el 13/10/2013 03:00:02
tengo esta expresion regular: /^[a-zA-Z][ ]+$/ donde se puede colocar letras y un espacio en blanco una o mas veces, se puede aplicar el espacion en blanco dentro de corchetes?
la aplique pero no lo hace sera que falta algo mas en la expresion?
saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

expresiones regulares

Publicado por xve (2100 intervenciones) el 13/10/2013 18:26:05
Para añadir un espacio, es tan simple como poner un espacio después de la z:
1
var patron=/^[a-z ]+$/i;

Que navegador estas utilizando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

expresiones regulares

Publicado por xve (2100 intervenciones) el 13/10/2013 18:24:36
Hola Zendi, sobre lo que comentas de la barra espaciadora es correcto, ya que no lo considera como una letra entre la a-z

Sobre lo que al abrir la pagina se muestra el mensaje, eso es porque de alguna manera ejecutas la función validateApellido(), ya que en el código que te he puesto de ejemplo, no se muestra el alert hasta que no pulsar un carácter diferente a a-z.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

expresiones regulares

Publicado por zendi (90 intervenciones) el 13/10/2013 21:16:39
BUEN DIA A TODOS TENGO ESTA EXPRESION REGULAR PARA VALIDAR QUE ACEPTE PALABRAS
:
1
/^[a-zA-Z]+$/
PARA COLOCAR QUE ACEPTE UN ESPACIO EN BLANCO ENTRE PALABRA Y PALABRA PUEDO COLOCARLE ESTE CARACTER? \s O ESTE: [ ]? O ES QUE EXISTE OTRA FORMA? LO HE ESTADO EJECUTANDO Y NO REALIZA LA FUNCION.
SALUDOS Y GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

expresiones regulares

Publicado por xve (2100 intervenciones) el 14/10/2013 08:37:14
Hola Zendi, que navegador estas utilizando? la manera que te comente en el post anterior a mi me funciona perfectamente en Chrome y Firefox.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

expresiones regulares

Publicado por zendi (90 intervenciones) el 14/10/2013 15:01:42
Hola Xve, estoy utilizando Firefox. Es bastante raro que no me funciona a mi. Estoy tratando de que valide tabulador, barra espaciadora, como dije antes, tambien que indique con mensaje que no se aceptan numeros. Ya que es para nombres o apellidos.
Estuve observando unos videotutoriales, pero son muy escasos en la explicacion, ¿coonoces por si acaso uno en especifico?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar