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]:)?(\\[^<>:"/\\|?*]+)+\\?$