Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema con regular expressio e slash

    ciao a tutti .. allora devo fare un controllo su un campo il formato del campo deve essere:

    12/10/2010

    uso quesa r.e.

    var espressione = /^([0-9]{2}\/)+([0-9]{2}\/)+([0-9]{4})+$/;

    però non funziona penso sia un problema di slash .. e che js non lo interpreta come carattere? Come potrei risolvere..

  2. #2

    Re: Problema con regular expressio e slash

    Originariamente inviato da slay
    ciao a tutti .. allora devo fare un controllo su un campo il formato del campo deve essere:

    12/10/2010

    uso quesa r.e.

    var espressione = /^([0-9]{2}\/)+([0-9]{2}\/)+([0-9]{4})+$/;

    però non funziona penso sia un problema di slash .. e che js non lo interpreta come carattere? Come potrei risolvere..
    che ci incastrano i +
    ?


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    ciao ho provato cmq in tutti i modi anche così:
    var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
    ma niente non funziona è prorpio un problema slash .. perchè se provo a fare così:

    var espressione = /^[0-9]{2}-[0-9]{2}-[0-9]{4}$/;
    quindi il formato inserito deve essere 24-12-2010 e se provo ad inserirlo esempio così 24/12-2010 mi viene visualizzato l'errore ...

    come posso rendere
    var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
    funzionante?

  4. #4
    non capisco ... questo funziona perfettamente:
    codice:
    var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/; 
    alert(espressione.test("01/02/2010"));  // true
    alert(espressione.test("01/02/201"));    // false
    alert(espressione.test("01/02-2010"));    // false
    L'inghippo può essere da qualche altra parte .. posta un po' di codice in più

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    ok ecco un po' di codice:

    Codice PHP:

    function controllo_data(stringa){    
        var 
    espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/; 

        if (!
    espressione.test(stringa))    {        
            return 
    false;    
        }else{        
            
    anno parseInt(stringa.substr(6),10);        
            
    mese parseInt(stringa.substr(32),10);        
            
    giorno parseInt(stringa.substr(02),10);                
            var 
    data=new Date(annomese-1giorno);        
            
            if(
    data.getFullYear()==anno && data.getMonth()+1==mese && data.getDate()==giorno){            
                return 
    true;        
            }else{            
                return 
    false;        
            }    
        }
    };




    function 
    modulo_strutture(){
            var 
    datackin=document.modulo_tipodata_str.sd.value;
            var 
    datackout=document.modulo_tipodata_str.ed.value;
            var 
    dateok="";
            
            if (
    datackin != "" && datackout != "") {
                
                if(!
    controllo_data(datackin) && !controllo_data(datackout)){        
                    
    alert('Inserire le date nel formato gg/mm/aaaa');        
                    return -
    1;    
                }    
                
                if(!
    confronta_data(datackin,datackout)){        
                    
    alert('La data di inizio deve essere precedente quella di fine');        
                    return -
    1;    
                }    
                
                
    anno1 parseInt(datackin.substr(6),10);    
                
    mese1 parseInt(datackin.substr(32),10);    
                
    giorno1 parseInt(datackin.substr(02),10);         
                    
                
    anno2 parseInt(datackout.substr(6),10);    
                
    mese2 parseInt(datackout.substr(32),10);    
                
    giorno2 parseInt(datackout.substr(02),10);    
                    
                var 
    dataok1=new Date(anno1mese1-1giorno1);    
                var 
    dataok2=new Date(anno2mese2-1giorno2);        
                
    differenza dataok2-dataok1;        
                
    //giorni_differenza = new String(differenza/86400000);        
                //alert(giorni_differenza+' giorni di differenza');    
                //return giorni_differenza;
                    
                
    if ((differenza/86400000) > 30) {
                    
    alert("La data del check out non può essere superiore di 30 giorni alla data del check in")
                } else {
                    
    dateok="ok"
                
    }
                    
            } else {
                
    dateok="ok"
            
    }
    ecc... 

  6. #6
    ecco l'inghippo..

    Codice PHP:
    if(!controllo_data(datackin) || !controllo_data(datackout)){        
                    
    alert('Inserire le date nel formato gg/mm/aaaa');        
                    return -
    1;    
                } 

  7. #7
    guarda, ho provato la funzione controllo_data, ovviamente rimettendo
    i backslash nei punti in cui erano stati 'mangiati' dal tag [php], così:
    codice:
    function controllo_data(stringa){    
        var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
    .. e la funzione .. funziona!
    se il codice è quello, per me deve funzionare.

    Un consiglio: usa Firefox con installato il plugin FireBug!
    troverai da solo l'inghippo!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  8. #8
    ok sis si sitemato ora funziona!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.