Autor Zpráva
Petr Svetr
Profil
Prosim vsechny o radu, jak napsat regular pro overeni datumu.

Projit ma 6.6.2008 , 6.06.2008 ( a pripadne i 6.6.08 , 6.6.2008)

Zkousel jsem
/^(([0-9])|([0-2][0-9])|(3[0-1]))\.(([1-9])|(0[1-9])|(1[0-2]))\.(([0- 9][0-9])|([1-2][0,9][0-9][0-9]))$/
...ale bez uspechu


Diky
ninja
Profil
^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2}|[0-9]{4})$

Jestli se jedna o validni (realne) datum si overis nasledne v aplikaci.
lordfrikk
Profil
Tady to máš:

(3[0-1]|2[0-9]|1[0-9]|[0-9])\.(1[0-2]|0-9)\.([0-9]{2}){1,2}


Kontrola pro den a měsíc je v pohodě, ale co se týče roku, tak rok může být vlastně 0-nekonečno. Záleží, jaký typ data budeš kontrolovat... pokud budeš kontrolovat datum narození, pak to omezíš např. na 1900-2000, pak by ta poslední část (místo "([0-9]{2}){1,2}") vypadala takto:

((19)?([0-9]{2}))|2000
Mastodont
Profil
--- DELETED
peta
Profil
Petr Svetr
viz ninja
A potom bych ho zpetne zkusil prohnat pres datumove funkce tam a zpet, zda dostanes stejne hodnoty

^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{2}|[0-9]{4})$
-> 0-9 00-99 . 0-9 00-99 . 00-99 0000-9999
split('.') -> d*1, m*1 , y*1
datum(d,m,y)
datum_zpet-> d2,m2,y2
d2==d1 && m2==m1 ...
?
Ano, pak je to platne datum a platny format.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: