Originariamente inviato da Braco
mettila così var re5digit = new RegExp("^([1-31])$");
dà errore già col 4
Originariamente inviato da Braco
mettila così var re5digit = new RegExp("^([1-31])$");
dà errore già col 4
Con quali non da errore?Originariamente inviato da Prazision
dà errore già col 4
con il 2 non lo davaOriginariamente inviato da Braco
Con quali non da errore?
ora vado, ti leggo dopo
grazie mille
dubito fortemente che [1-31] sia l'intervallo da 1 a 31: [1-31] matcha al massimo 1, 2 oppure 3.Originariamente inviato da Braco
Funziona perchè di prima dici che con dei numeri risponde, c'è da sistemare la reg. fai una cosa, per le prove usa questo:
var re5digit = new RegExp("^([1-31]+)$"); e guarda il link che ti ho postato, modifica la reg, modifica solo ciò che è nelle parentesi quadre.
scrivi così:
quell'espressione regolare controlla già intrinsecamente la lunghezza e il fatto che il campo non sia vuotocodice:function checkdata(){ var re5digit=/^(0[1-9]|[12]\d|3[01])\/(0[1-9]|1[012])\/(19|20|21)\d{2}$/; data = document.forms["item1"].starting_date; if (!re5digit.test(data.value)) { alert("Please enter a valid data"); data.focus(); return false; } }
Occhio all'escape delle slash in avanti e all'apice e al dollaro che delimitano la regexp.
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
se ti vuoi allenare con le espressioni regolariprova anche questa
![]()
codice://------------------------------------------------ //valida la stringa dateStr //------------------------------------------------ function IsDate(dateStr) { var 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
la soluzione proposta da fcaldera funziona (quasi) ma prende l'anno di 3 cifre e non da 4
quella di pietro09 (stupenda, guarda anche le corrispondenze tra mesi e giorni) funziona ma accetta anche una cosa tipo 1/09/2001 (mentre a me servirebbe 01/09/2001); ho ovviato a questo problema controllando che ci siano 10 caratteri nella stringa passata (dovrebbe bastare)
grazie tantissimo a tutti per l'aiuto
mi fai vedere come l'hai scritta?Originariamente inviato da Prazision
la soluzione proposta da fcaldera funziona (quasi) ma prende l'anno di 3 cifre e non da 4
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
ho fatto copia e incolla dalla tuaOriginariamente inviato da fcaldera
mi fai vedere come l'hai scritta?
allora probabilmente hai un errore nel codice restante...
se provi a copiare l'esempio seguente, la regexp accetta solo anni a 4 cifre
codice:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>xhtml 1.0</title> <script type="text/javascript"> // <![CDATA[ function checkdata(dt){ var re5digit=/^(0[1-9]|[12]\d|3[01])\/(0[1-9]|1[012])\/(19|20|21)\d{2}$/; data = document.getElementById(dt); if (!re5digit.test(data.value)) { alert("Please enter a valid data"); data.focus(); return false; } else { alert('la regexp accetta questa data'); } } // ]]> </script> </head> <body> <input type="text" value="10/08/1978" id="data" /> <input type="button" value=" check " onclick="checkdata('data');" /> </body> </html>![]()
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)