Regex tiedostopolun validointiin JavaScriptissä
En tunnu löytävän JavaScriptille sopivaa säännöllistä lauseketta, joka testaisi seuraavia tapauksia:
- c:\temp
- D:\directoryname\testing\
- \john-työpöytä\tempdir\
Näet, mihin olen menossa. Tarvitsen sen vain validoimaan tiedostopolun. Mutta näyttää siltä, että kaikki löytämäni lausekkeet eivät toimi JavaScriptissä.
Vastaus #1
Tässä on Windowsin polun validointi, se toimii hyvin kaikkien Windowsin polkusääntöjen kanssa.
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;
}
}
ja tämä on Linux-polun tarkistusta varten.
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;
}
Yritä tehdä se yhdellä ehdolla.
Vastaus #2
Kokeile tätä:
([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?
MUOKKAA :
@Bart sai minut ajattelemaan tätä säännöllistä lauseketta. Tämän pitäisi toimia hienosti Windowsin poluissa.
^([a-zA-Z]:)?(\\[^<>:"/\\|?*]+)+\\?$
