Foros del Web » Programando para Internet » Javascript »

Validacion string con expresiones regulares!

Estas en el tema de Validacion string con expresiones regulares! en el foro de Javascript en Foros del Web. Buenas Necesito que al recibir un string en una función esta me lo analice y me deje solo los caracteres que son numeros o letras ...
  #1 (permalink)  
Antiguo 15/02/2012, 16:37
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Validacion string con expresiones regulares!

Buenas


Necesito que al recibir un string en una función esta me lo analice y me deje solo los caracteres que son numeros o letras sin ñ, sin espacion, sin caracteres raros,

No habia usado expresiones regualres..."o no desde ceros jaja" Hice esto no se si sea la mejor manera de hacerlo pero no e logrado hacerlo funcionar .

Código:
function FrmNomDirectorios (nuevoAlias) 
{
	for (var i=0; i<nuevoAlias.length; i++)
	{
		var caracter = cadena[i];
		alert(caracter);
		var NueCadena = ""; 
		if (!/^([a-z0-9A-Z])*$/.test(caracter))
			NueCadena = NueCadena+caracter;
	}
}
  #2 (permalink)  
Antiguo 15/02/2012, 18:45
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: Validacion string con expresiones regulares!

buenas,
aunque puede ser una solucion, considero que esta muy rebuscada considerando las posiblidades que ofrecen las expresiones regulares. puedes crear un patron que busque globalmente en un string todos los caracteres que no sean validos segun tu criterio y eliminarlos del string. todo esto en una sola linea! solo debes de crear una clase donde indiques los caracteres validos y luego negarlos. o sea, [^grupo de caracteres validos]. luego eso lo pasas por la funcion replace de los string y una cadena vacia para eliminar el patron. string.replace(regex, "");
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 16/02/2012, 09:50
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Validacion string con expresiones regulares!

gracias por su respuesta pero en serio me enrede con esa validacion... hice algo como esto pero creo que hay estoy haciendo al revez porque lo que quiero es que medeje numeros y letrs y el resto me lo quite.... ¿Cómo la arreglo? Gracias

Código:
function FrmNomDirectorios (nuevoAlias) 
{
	var regex = [A-Za-z0-9];
	nuevoAlias.string.replace(regex, nuevoAlias);
	alert (nuevoAlias);
}
  #4 (permalink)  
Antiguo 16/02/2012, 10:23
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: Validacion string con expresiones regulares!

Cita:
Iniciado por helacer Ver Mensaje
Buenas


Necesito que al recibir un string en una función esta me lo analice y me deje solo los caracteres que son numeros o letras sin ñ, sin espacion, sin caracteres raros,

No habia usado expresiones regualres..."o no desde ceros jaja" Hice esto no se si sea la mejor manera de hacerlo pero no e logrado hacerlo funcionar .

Código:
function FrmNomDirectorios (nuevoAlias) 
{
	for (var i=0; i<nuevoAlias.length; i++)
	{
		var caracter = cadena[i];
		alert(caracter);
		var NueCadena = ""; 
		if (!/^([a-z0-9A-Z])*$/.test(caracter))
			NueCadena = NueCadena+caracter;
	}
}
Al pasar, y bastante offtopic.

Por convención casi de facto en JavaScript se suelen usar llaves arriba, y las funciones no capitalizadas (a menos que sean constructores). Programás en algun lenguaje de .NET?

Por otro lado, declarar variables dentro de un bloque no es correcto en el sentido de lo que representa (el scope está definido por la función y no por el bloque for).
Código Javascript:
Ver original
  1. function frmNomDirectorios(nuevoAlias) {
  2.     // Esto se llama "hoisting manual", si te interesa leer al respecto
  3.     // hay bastante en internet sobre variable hoisting
  4.     var caracteres, i, nuevaCadena;
  5.    
  6.     for (i = 0; i < nuevoAlias.length; i++) {
  7.         caracter = cadena[i];
  8.         alert(caracter);
  9.         nuevaCadena = "";
  10.         // Es una buena practica utilizar las llaves _siempre_
  11.         if (!/^([a-z0-9A-Z])*$/.test(caracter)) {
  12.             // Podes simplificar la operacion a = a + b en a += b
  13.             nuevaCadena += caracter;       
  14.         }
  15.     }
  16. }
__________________
blog | @aijoona
  #5 (permalink)  
Antiguo 16/02/2012, 14:23
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: Validacion string con expresiones regulares!

Cita:
Iniciado por helacer Ver Mensaje
hice algo como esto pero creo que hay estoy haciendo al revez porque lo que quiero es que medeje numeros y letrs y el resto me lo quite....
esa es la idea... al tu indicar los caracteres validos y luego negarlos, lo que estas haciendo es seleccionando el rango de letras que no esten compuesta por los caracteres antes indicados. es decir, [^a-z] significa todo lo que no sea entre a y z. el metodo replace obtiene los caracteres seleccionados por la expresion y lo reemplaza por un string vacio (o lo mismo que eliminar el caracter) quedando asi solo los caracteres validos.

nota:
- string en el ejemplo anterior suponia ser una variable que contiene una cadena. no era que tenia que escribirlo tal cual en tu codigo.
- replace devuelve una copia de la cadena modificada. tienes que asignar el resultado al lugar de origen.
- las expresiones regulares literales se escriben entre dos diagonales (/regex/)
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: expresiones, funcion, string
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 04:20.