Foros del Web » Programando para Internet » Javascript »

Tengo esta Expresion regular pero no funciona como quiero

Estas en el tema de Tengo esta Expresion regular pero no funciona como quiero en el foro de Javascript en Foros del Web. Saludos, estimados necesito ingresar un nombre o los dos nombres de una persona, este es mi codigo para validar las cadenas y con espacios: Cita: ...
  #1 (permalink)  
Antiguo 10/07/2010, 19:56
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 4 meses
Puntos: 4
Tengo esta Expresion regular pero no funciona como quiero

Saludos, estimados necesito ingresar un nombre o los dos nombres de una persona, este es mi codigo para validar las cadenas y con espacios:

Cita:
function ValidaNombre(e) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla == 8) return true;
var rexp = new RegExp(/^[a-zA-ZñÑ\s]*$/);
te = String.fromCharCode(tecla);
return rexp.test(te);
}
El problema esta en que no se como sacar el espacio al inicio y al final y mas aun, tiene que permitir un solo espacio entre las dos cadenas si da la ocacion (no mas de uno), espero que me puedan ayudar. Gracias.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #2 (permalink)  
Antiguo 10/07/2010, 20:22
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Tengo esta Expresion regular pero no funciona como quiero

en lugar de validar por tecla valida por contenido. es decir, lees el contenido del campo y lo validas con la expresión. puedes usar la siguiente expresión.
Código:
var regex = /^[a-zñÑ]+\s[a-zñÑ]+$/i;
regex.test(value_campo);
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 10/07/2010, 20:40
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: Tengo esta Expresion regular pero no funciona como quiero

Saludos, gracias estimado tendre presente tu opinion de como validar, pero me podrias ayudar de la forma por tecla ya que lo necesito, gracias.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #4 (permalink)  
Antiguo 10/07/2010, 20:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Tengo esta Expresion regular pero no funciona como quiero

si vas a validar por teclas necesitarias dos expresiones porque con la que tienes no puedes determinar el orden. es decir, no puedes determinar si comienza o termina por espacio. tendrías que incorportar otra expresión como la que mostré específicamente para validar el contenido.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 10/07/2010, 20:56
Avatar de BlueSkull  
Fecha de Ingreso: noviembre-2008
Ubicación: Chile
Mensajes: 504
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: Tengo esta Expresion regular pero no funciona como quiero

Ok, tendras mas menos una idea de como hacerlo, como termino de tomar toda la variable (si estoy por tecla) y la valido otra vez, gracias.
__________________
"Incluso las torres más altas empiezan en el suelo."
"Sé Ágil..."
StreamWriter
  #6 (permalink)  
Antiguo 10/07/2010, 21:10
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Tengo esta Expresion regular pero no funciona como quiero

veamos. la expresión que tienes es para validar que las teclas sean las aceptables, de modo que esa expresión la usas en eventos relacionados al teclado dentro del mismo campo.
Código:
<input onkeypress="return ValidaNombre(event);" name="nombre" />

// tu funcion;
function ValidaNombre(e) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla == 8) return true;

// he modificado la expresion a lo siguiente porque;
// despues de todo solo vas a validar una sola letra;
var rexp = /[a-zA-ZñÑ\s]/);
te = String.fromCharCode(tecla);
return rexp.test(te);
}
validar el contenido tiene mayor sentido cuando se envie el formulario, por tanto este debes de hacerlo en el evento onsubmit del formulario.
Código:
<form onsubmit="return fnValidate(this);">

function fnValidate(form){
var regex = /^[a-zñÑ]+(\s[a-zñÑ]+)?$/i;
return regex.test(form.nombre.value);
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: expresion, regular
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 12:38.