Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Regex per data

  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Regex per data

    Utilizzo questa regex per verificare la correttezza di una data
    /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/

    Per quanto riguarda il formato funziona correttamente, il problema ce l'ho nel momento in cui uno mi inserisce una data inesistente tipo: 30/02/2020

    Esiste una regex che validi anche l'esistenza di una data?
    Grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Dovresti quindi includere anche la verifica sugli anni bisestili; può anche esistere, vedi qualche risposta qui o qui, ma per quanto una regex possa essere completa e validare al meglio l'input, sarebbe forse più semplice ed accurato usare un datepicker, così che l'utente sia "costretto" già in partenza ad inserire una data valida e nel formato prestabilito.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie!
    Il datapicker ho già in programma di implementarlo, ma se poi l'utente modifica la data a mano potrebbero comunque entrare nel db dei dati errati.
    Sonia

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    @Sonitag

    I controlli vanno fatti sia sulla parte client che la parte server.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Esiste una regex che validi anche l'esistenza di una data?
    Grazie
    Sì, esiste.
    Dovrebbe essere la seguente.


    codice:
    function is_a_valid_date(elementValue){
        var datePattern=/^(?:(?:31(\/)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
        return datePattern.test(elementValue);
    }
    
    
    // 2012 era un anno bisestile
    alert(is_a_valid_date('29/02/2012'));
    
    
    // 2013 non era un anno bisestile
    alert(is_a_valid_date('29/02/2013'));

  6. #6
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    La sto testando e direi che funziona perfettamente!
    Grazie mille!

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.