Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/11/2014, 12:06
Avatar de berkeleyPunk
berkeleyPunk
 
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 3 meses
Puntos: 22
Pregunta Respuesta: Expresión regular para nombre de archivo

Cita:
Iniciado por Alexis88 Ver Mensaje
...obtenemos la porción de la cadena a partir del último contra-slash... tomando así solo al nombre del archivo y su extensión
Hola Alexis88, como siempre, gracias.

Híjole mano, si tienes tiempo a ver si me ayudas con estas dudas:

1) Entonces, corroborando, si no empleamos el lastIndexOf el value del input agarra todo, que es la ruta completa del archivo en el disco duro del cliente.
2) ¿La expresión regular [a-z] incluye letras acentuadas? (parece que sí).
3) Si la respuesta a la pregunta anterior es SÍ, entonces por qué tu código valida MAL esto: áéíóú.pdf, pero valida BIEN esto: áéíóú-ñoño.pdf

Modifiqué un poquillo tu código para hacer que la validación incluya lo que se considera caracteres especiales: acentos, signos varios, etc. Pero como no me salió poner toda la validación en una sola expresión regular, pues hice la validación en varios niveles :

Código Javascript:
Ver original
  1. function validar_nombre_de_archivo(inputFile) {
  2.     var valor   = inputFile.value;
  3.     var archivo = valor.substr(valor.lastIndexOf("\\") + 1);
  4.  
  5.     if (!/[\s]+/gi.test(archivo)) {
  6.         console.log("No tiene espacios. ADELANTE");
  7.         if (!/[áãàáäâªèéëêìíïïòóöôùúüûñ稺~#@!%&¡¿}¨´><`;,:()\|\·\$\^\[\]\?\+\\]+/gi.test(archivo)) {
  8.             console.log("No tiene caracteres especiales. ADELANTE.");
  9.         }
  10.         else {
  11.             console.log("Tiene caracteres especiales. ALTO.");
  12.         }
  13.     }
  14.     else {
  15.         console.log("Tiene espacios. ALTO");
  16.     }
  17. }


Hasta donde sé, esto:
Código Javascript:
Ver original
  1. if (/[^\s]+/gi.test(archivo)) {...}
debería leerse como: si no hay espacios... Pero no me funciona, por eso utilicé el operador !

Maestro, ¿apruebas esta validación? (sin contar lo feo que se ve al emplear tantas líneas )

Saludos!