Foros del Web » Programando para Internet » Javascript »

Detectar carateres validos

Estas en el tema de Detectar carateres validos en el foro de Javascript en Foros del Web. Les paso a contar Quiero armar una funcion que detecte si el nombre de archivo ingresado es válido. Estilo el mensaje que aparece cuando, en ...
  #1 (permalink)  
Antiguo 07/07/2003, 06:58
 
Fecha de Ingreso: abril-2002
Mensajes: 30
Antigüedad: 22 años
Puntos: 0
Detectar carateres validos

Les paso a contar

Quiero armar una funcion que detecte si el nombre de archivo ingresado es válido. Estilo el mensaje que aparece cuando, en windows, ponemos un "?" al renombrar un archivo por ejemplo.

El tema es que empecé a armar algo con Expresiones Regulares (reconozco que mi conocimiendo de JavaScript es muy básico).
Estuve leyendo un poquito la documentación de JScript y armé esta es la función (funciona bien)

function chk1(strInput) {
var re = new RegExp("[<>/\:\*\?\"\|]", "gi")
error = strInput.match(re);
if ((error != "") && (error != null)) {
alert("Un nombre de archivo no puede contener ninguno de los siguientes caracteres:\n \\ / : * ? \" < > | \n\n Su archivo contiene: " + error);
}else{
alert("Nombre válido");
}
}

Detecta los siguientes caracteres < > / : * ? " |
Si encuentra uno o mas mostrara la pantalla de error y si no detecta ninguno mostrara el mensaje "Nombre válido"

pero el problema surge cuando quiero detectar la barra "\", cuando agrego las dos barras "\\"


var re = new RegExp("[<>/\:\*\?\"\|\\ ]", "gi")


Espero puedan decirme cual es el error.
Muchas gracias


Pd: Y ya que estamos una pregunta extra:
Hay manera de mostrar un cuadro de dialogo como el alert,
pero que en vez del signo de admiración tenga la x roja?
  #2 (permalink)  
Antiguo 07/07/2003, 07:30
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
No estoy muy seguro, pero cuando ponemos esta barra \ es para indicar una secuencia de escape ( ¿se llama así? ). El caso es que, por ejemplo, para indicar un salto de línea en una cadena de texto ponemos \n, y para unas comillas \" entre otras.

Así que supongo que para indicar el caracter barra (\) deberías poner \\ y para la doble barra (\\) esto \\\\.

Espero que te sirva, si no, a lo mejor también puedes usar el código ASCII de cada caracter.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 07/07/2003, 12:42
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, taka.

Después de enredar un rato con las expresiones regulares he sido incapaz de conseguirlo con var re = new RegExp... Pero si que creo que te funcionará con:
Código:
re = /[<>/\:\*\?\x22\|/\\/]/gi
\x22 busca las comillas (22 hexadecimal) y /\\/ busca la barra invertida.

Supongo que también querrás detectar un espacio en blanco, en ese caso pones:
Código:
re = /[<>/\:\*\?\x22\|/\\/\s]/gi
Espero que te sirva. Saludos,
  #4 (permalink)  
Antiguo 07/07/2003, 17:19
 
Fecha de Ingreso: abril-2002
Mensajes: 30
Antigüedad: 22 años
Puntos: 0
Gracias por preocuparse a ambos.

Voy a probarlo despues les cuento como me fué.
Gracias

PD: agendaré tu mail
  #5 (permalink)  
Antiguo 08/07/2003, 17:29
 
Fecha de Ingreso: abril-2002
Mensajes: 30
Antigüedad: 22 años
Puntos: 0
erfecto ahora si funciona bien. Gracias JavierB.

Reemplazando la linea que JavierB pasó, la funcion quedó asi:
(La pongo por si a alguien le sirve)

Descripción:
La función detecta los caracteres \ / : " < > ? * | y los espacios en blanco.
Si el nombre ingresado es válido (no contiene ninguno de los caracteres anteriores) redirecciona al archivo files.asp pasando los datos file y newName (file es el nombre de la foto actual, newName el nombre nuevo)
En caso contrario muestra un mensaje de error.


Código:
function renameFile(theFile) {
  if (theFile != "") {
    var newName = prompt("Renombrar archivo: "+theFile, theFile);
    if ((newName != null) && (newName != "")) {
      var re = /[<>/\:\*\?\x22\|/\\/\s]/gi
      error = newName.match(re);
      if ((error != "") && (error != null)) {
        alert("Un nombre de archivo no puede contener ninguno de los siguientes caracteres:\n                  \\ / : * ? \" < > |");
      } else {
        //alert("Nombre válido: "+newName);
        window.location.href= "files.asp?file=" + theFile + "&newName=" + newName;
      }
    }
  }
}
para llamarla la función

javascript:renameFile('mifoto.jpg')

saludos
  #6 (permalink)  
Antiguo 28/02/2007, 15:00
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: Detectar carateres validos

y... saben como se puede bloquera el punto (".")??

cual es la expresion a colocar, o donde se puede encontrar????
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
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 20:09.