Expresión regular para la validación de rutas de archivo en JavaScript
No puedo parecer encontrar una Expresión Regular para JavaScript que pruebe los siguientes casos:
- c:\temp
- D:\directorio\pruebas\
- \john-escritorio\tempdir\
Puedes ver a qué me refiero. Solo necesito que valide una ruta de archivo. Pero parece que todas las expresiones que he encontrado no funcionan para JavaScript.
Respuesta #1
Aquí está la validación de rutas de Windows, funciona bien para todas las reglas de rutas de Windows.
var contPathWin = document.editConf.containerPathWin.value;
if(contPathWin=="" || !windowsPathValidation(contPathWin))
{
alert("please enter valid path");
return false;
}
function windowsPathValidation(contwinpath)
{
if((contwinpath.charAt(0) != "\\" || contwinpath.charAt(1) != "\\") || (contwinpath.charAt(0) != "/" || contwinpath.charAt(1) != "/"))
{
if(!contwinpath.charAt(0).match(/^[a-zA-Z]/))
{
return false;
}
if(!contwinpath.charAt(1).match(/^[:]/) || !contwinpath.charAt(2).match(/^[\/\\]/))
{
return false;
}
}
y esto es para la validación de rutas en Linux.
var contPathLinux = document.addSvmEncryption.containerPathLinux.value;
if(contPathLinux=="" || !linuxPathValidation(contPathLinux))
{
alert("please enter valid path");
return false;
}
function linuxPathValidation(contPathLinux)
{
for(var k=0;k<contPathLinux.length;k++){
if(contPathLinux.charAt(k).match(/^[\\]$/) ){
return false;
}
}
if(contPathLinux.charAt(0) != "/")
{
return false;
}
if(contPathLinux.charAt(0) == "/" && contPathLinux.charAt(1) == "/")
{
return false;
}
return true;
}
Intenta hacerlo en una sola condición.
Respuesta #2
Prueba esto:
([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?
EDITAR :
@Bart me hizo pensar en esta expresión regular. Esta debería funcionar bien para las rutas de Windows.
^([a-zA-Z]:)?(\\[^<>:"/\\|?*]+)+\\?$
