…meie igapäevast IT’d anna meile igapäev…

2007-11-08

YYYY-MM-DD kuupäeva valideerimine JavaScripti abil

Filed under: Infotehnoloogia,Isiklikud,Programmeerimine — Sander @ 09:23:34

Et ma teine kord enam ei peaks seda leiutama…

   1: function validateYYYYMMDD(dt) {    
   2:     var objRegExp =  /^[12][90][0-9][0-9]\-[0-1]?[0-2]\-[0-3]?[0-9]$/;
   3:     var objRegExp2 = /^\d{4}\-\d{2}\-\d{1,2}$/;
   4:     
   5:     return ((dt.match(objRegExp)) && (dt!='') && (dt.match(objRegExp2)));
   6: }

7 kommentaari »

  1. Tundub, et kuu osa on vigane.. näiteks 1992-03-01 ta ilmselt ei söö.

    Lisaks miks kontrollida kahte regulaaravaldist ? kas see ei ole topelttöö ?

    Mina kasutaksin pigem midagi sellist:
    ^
    (?(19|20)\d\d) #1900-2099
    \-(?0?\d|1[0-2]) #1-12 or 01-12
    \-(?[0-2]?\d|3[0-1]) #1-31 or 01-31
    $

    kommentaar kirjutas imre — 2007-11-08 @ 20:15:04 | Vasta

  2. Ühe kriipsu oli blogikurat vahepealt ära söönud:

    var objRegExp = /^[12][90][0-9][0-9]\-[01]?[0-2]\-[0-3]?[0-9]$/;

    Nüüd sööb -03- ilusti.

    Aga miks kaks avaldist? KISS-põhimõte… ürita debugida super-hüper-karmi 400-tähelist regulaaravaldist ja siis räägime edasi (näide elust, muideks – võrgust leitud “universaalne kuupäeva ja kellaaja valideerimise RegExp”. Mis ei töötanud).

    kommentaar kirjutas dukelupus — 2007-11-09 @ 08:22:10 | Vasta

  3. Muideks, sinu regulaaravaldis – “^(?(19|20)\d\d)\-(?0?\d|1[0-2])\-(?[0-2]?\d|3[0-1])$” – ei meeldi js parserile, katseta http://www.regular-expressions.info/javascriptexample.html

    kommentaar kirjutas dukelupus — 2007-11-09 @ 08:28:17 | Vasta

  4. Kas see kood peab vigaseks ka näiteks kuupäeva 2007-02-30?
    Liigaastate kontrolli selles vist pole?

    kommentaar kirjutas Lauri — 2007-11-09 @ 10:14:04 | Vasta

  5. See on kliendipoolne kontroll. Liigaastate kontroll pole siin eesmärgiks, see peab toimuma serveri poolel. Kliendi poolel on oluline kasutaja teavitamine selgelt valest kuupäevaformaadist ilma serverile infot edastamata. Täiendav kontroll tuleb teha ikka serveri poolel, sest muidu saaks imelihtsalt saata andmebaasi mida iganes selles väljas.

    kommentaar kirjutas dukelupus — 2007-11-09 @ 18:15:08 | Vasta

  6. Äkki kasutaks juba päris-kalendrit siis :) http://marcgrabanski.com/code/ui-datepicker/ näiteks.

    kommentaar kirjutas Anti — 2007-12-13 @ 08:58:15 | Vasta

  7. Kasutatud ongi “päris” kalendrit, nimelt http://www.dynarch.com/projects/calendar/. Kliendi soovi kohaselt oli vaja aga ka käsitsi kuupäeva sisestamise võimalust.

    kommentaar kirjutas dukelupus — 2007-12-13 @ 14:44:09 | Vasta


RSS feed for comments on this post. TrackBack URI

Lisa kommentaar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s

Blog at WordPress.com.