Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di luigi76
    Registrato dal
    Jan 2001
    Messaggi
    460

    [Espressioni Regolari] validare una data

    Salve quale pattern mi consigliate per validare una data nel formato italiano
    gg/mm/aaaa (20/12/2006)

    Ringrazio anticipatamente

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
    //------------------------------------------------
    //valida la stringa dateStr
    //------------------------------------------------
    function IsDate(dateStr)
    {
    	datePat = /^((3[01]|[12]\d|0?[1-9])\/(0?[13578]|10|12)\/(\d\d)?\d\d|(30|[12]\d|0?[1-9])\/(0?[469]|11)\/(\d\d)?\d\d|(2[0-8]|[01]\d|0?[1-9])\/(0?2)\/(\d\d)?\d\d|29\/(0?2)\/(1200|1600|2000|2400|2800|00)|29\/(0?2)\/(\d\d)?(0[48]|[2468][048]|[13579][26]))$/;
        var matchArray = dateStr.match(datePat); 
    	return !(matchArray == null)
    	
    }
    Pietro

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Per quanto riguarda la validazione sintattica:
    /(\d{2}[\/\.]){2}\d{4}/
    Oppure, piu` selettiva:
    /([0-2]\d)|(3[01])[\/\.](0[1-9])|(1[0-2])[\/\.](19)|(20)\d{2}/

    Invece per una validazione semantica, puoi trasformare la stringa in oggetto Date() e quindi controllare se i singoli pezzi coincidono:
    codice:
    function checkdate(origstr) {
      if(!origstr.match(/(\d{2}[\/\.]){2}\d{4}/) {
        alert("formato non corretto");
        return false;
      }
      var pezzi = origstr.split([\.\/]);
      var ogg = new Date(pezzi[2], parseInt(pezzi[1])-1, pezzi[0]);
      if(parseInt(pezzi[2]) != ogg.getFullYear()) {
        alert("anno sbagliato");
        return false;
      }
      if(parseInt(pezzi[1]) != ogg.getMonth()+1) {
        alert("mese sbagliato");
        return false;
      }
      if(parseInt(pezzi[0]) != ogg.getDate()) {
        alert("giorno sbagliato");
        return false;
      }
      return true;
    }
    Nota: nessuno di questi metodi ti puo` controlalre di non aver confuso il 3 febbraio con il 2 marzo e sim.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.