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:
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