Foros del Web » Programando para Internet » Javascript »

expresion regular

Estas en el tema de expresion regular en el foro de Javascript en Foros del Web. Hola chicos. Quiero realizar el efecto cuando escribes en un campo de tenxo pais desde que lo vallas escribiendo aparece opciones disponibles (autorelleno). Tengo un ...
  #1 (permalink)  
Antiguo 18/01/2008, 01:57
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
expresion regular

Hola chicos.
Quiero realizar el efecto cuando escribes en un campo de tenxo pais desde que lo vallas escribiendo aparece opciones disponibles (autorelleno).

Tengo un cmpo de texto logicamente

<input type = 'text'
name = 'pais' id = 'pais' size = '30' maxlenght = '30'
value = '' onblur = 'listaPais(this)' />

y la funcion de JAvaScript

function listaPais(ntol){
var listaPaices = new Array(
'Afganistan',
'Alemania',
'Andorra',
'Argentina',
.................
'Yugoslavia'
);

//get a value of pais field
var pais = $("#pais").val();
//alert(pais);
var i = 0;
for (i = 0; i<listaPaices.lenght; i++){
//expresion regular
//veremos si es igual a lo que esta escribiendo en el field del pais
expr = /^+pais+$/;
//alert (expr);
if(expr.test(listaPaices[i])){
pais = listaPaices[i];
}
}
}

Creo que no construyo bien la variable expr

expr = /^+pais+$/;


ya que me devuelve el error: invalid quantifier +pais+$

No tengo muy claro como meto la variable pais(el valor que esta escribiendo el usuario) como expresion regular

El valor del campo pais recibo con jQuery y lo recibo correctamente.
  #2 (permalink)  
Antiguo 18/01/2008, 02:39
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 32
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: expresion regular

Me parece que puedes usar esta alternativa:

Código HTML:
// expr = /^+pais+$/;
exp_reg = new RegExp("/^" + pais +"$/");
  #3 (permalink)  
Antiguo 18/01/2008, 02:49
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: expresion regular

Además de lo dicho por _kai_, te sugiero alguna modificación más:
1. Crea la expresión regular una sola vez fuera del bucle.
2. La expresión que quieres no es /^pais$/ sino más bien /^pais/ porque pongamos que el usuario va escribiendo y llega a escribir en el campo"Au". La expresión que quieres es /^Au/ es decir, todos los países que empiecen por Au, pero si pones el $ sería todos los que sean exactamente Au, sin nada más.
3. Ya que estás, no metas el array de países dentro de la función, porque así se está creando cada vez que llamas a la función.

Código HTML:
<script>
var pais = $("#pais").val();
var expr = new RegExp("^"+pais);
for (i = 0; i<listaPaices.length; i++){
...
</script> 
  #4 (permalink)  
Antiguo 18/01/2008, 04:11
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: expresion regular

Gracias chicos. Voy a probarlo ahora mismo.
Y lo del array tienes razon, no lo he pensado que se ejecuta cada vez que llamo la func.
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 14:50.