Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/04/2007, 05:44
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: validar la ruta de un archivo

Esta expresión me ha dado buenos resultados en estas pruebas, espero que no tenga muchos defectos:
Código:
var strRuta=[ "H:\\MisArchivos\\Recibidos",
	"D:\\MisArchivos\\Recibidos..Actuales",
	"D:\\MisArchivos\\Recibidos Actuales",
	"c:\\MisArchivos\\Recibidos_Actual",
	"Discolocal:\\MisArchivos\\Recibidos",
	"c:\\misArchivos\\actuales",
	"c:\\misArchivos-2007\\actuales.hoy",
	"localC:\\misArchivos 2007\\actuales.hoy" ];
var strNormales= [ "hola",
	"hola:\\",
	"u:\\archivo_con_ñ",
	"F:\\directorio-especial\\archivo?no¡valido",
	"C:\\",
	"algo malo:\\archivo.txt",
	"algobueno:\\carpeta-cualquiera\\archivo&invalido"
];
var re=/^[a-z]+:\\([a-z0-9\._\- ]+\\)?([a-z0-9\._\- ]+)$/i;

for(var i in strRuta) {
	document.write(strRuta[i]+" --> "+re.test(strRuta[i])+"<br/>");
}
document.write("<br/><br>");
for(var i in strNormales) {
	document.write(strNormales[i]+" --> "+re.test(strNormales[i])+"<br/>");
}
Código:
/^[a-z]+:\\([a-z0-9\._\- ]+\\)?([a-z0-9\._\- ]+)$/i
-Busco lo primero el principio de cadena ^
-Luego uno o más caracteres válidos para la unidad, los dos puntos y la contrabarra de rigor [a-z]+:\\
- ([a-z0-9\._\- ]+\\)? se refiere a un directorio. Un conjunto de caracteres válidos para un directorio (uno o más) seguidos de la contrabarra. Todo el conjunto es opcional ya que pueden haber directorios o no.
- ([a-z0-9\._\- ]+) se refiere a un archivo. Conjunto de caracteres válidos, uno o más, y el grupo sólo ha de repetirse una vez y ser obligatorio
- Fin de cadena $


Tu expresión:
Código:
/^\w+([\\]?\w+)+$/
Decía:
Un caracter alfanumérico seguido de un grupo que aparezca al menos una vez formado por:
Una contrabarra opcional seguido de un caracter alfanumérico repetido al menos una vez.

Representaría cosas como esta:
-U
-H\\hola
-m\\quetal

Te faltarían de todos modos los dos puntos, pero ibas más o menos encaminado. Ten en cuenta que poner \w+ seguido de (\w+)+ (ya que la contrabarra es opcional) es un poco complicado de leer.


Un saludo
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.