Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    Espressioni regolari: formato data e caratteri inizio/fine

    Devo controllare che un campo in un form sia nel formato data gg/mm/aaaa per cui come pattern ho utilizzato questo:

    $pattern = "(^(0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[/](19|20)\d\d$)";


    Ho alcuni dubbi che pur cercando non ho fugato:

    1) i caratteri ^ e $ per indicare inizio e fine hanno senso, si devono utilizzare, di preciso cosa fanno?
    2) io ho messo delle parentesi tonde ad inizio e fine ma ho visto mettere anche / oppure % è corretto?
    3) per quanto riguarda il separatore / l'ho messo tra parentesi quadre. E' giusto oppure è più corretto senza e con un escape \/ oppure con parentesi quadre ed escape [\/]?

    Grazie
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Vediamo di rispondermi per vedere se ho capito:

    1) il carattere ^ indica l'inizio (o la negazione se inserito in una sottostringa; in questo caso non va utilizzato da che voglio che la stingra che controllo sia esattamente della lunghezza/forma utilizzata

    2) le parentesi tonde indicano delle sottostringhe per cui credo di poterle omettere, almeno ad inizio e fine

    3) ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    2) le parentesi vanno lasciate perchè racchiudono l'espressione per cui vanno lasciate
    3) è corretto così perchè le parentesi quadre indicano che può o deve contenere uno o tutti i caratteri (in questo caso è uno solo)

    Per cui il risultato finale del pattern per una data in formato gg/mm/aaaa è questo:

    Codice PHP:
    $pattern "((0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[/](19|20)\\d\\d)"
    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Dato che ci sono vi posto anche la funzione che ho fatto che magari torna comoda a qualcuno:

    Codice PHP:
    // Verifica che la data sia nel formato corretto e che sia una data valida
    function data_verifica($data){
        
    $pattern "((0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[/](19|20)\\d\\d)";
        if(!
    preg_match($pattern$data)) {
            return 
    false;
        } else {
            
    $arr_data explode("/"$data);
            
    $giorno $arr_data[0];
            
    $mese $arr_data[1];
            
    $anno $arr_data[2];
            if(!
    checkdate($mese$giorno$anno)){
                return 
    false;
            } else {
                return 
    true;
            }
        }


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.