Voiko säännöllisillä lausekkeilla tarkistaa lukuja, jotka on suurempia kuin 9. Esim. kun pitäisi syöttää syntymäaika muodoss ppkkvv, niin ei voisi syöttää 000000 tai 321380?
Voi tarkistaa, voit jopa tehdä sellaisen että 300208 ei mene läpi. Tosin helposti tulee aika monimutkaisia lausekkeita mitä hienomman teet siitä.
Grez kirjoitti:
Voi tarkistaa, voit jopa tehdä sellaisen että 300208 ei mene läpi. Tosin helposti tulee aika monimutkaisia lausekkeita mitä hienomman teet siitä.
No voisko vähän antaa apuja, kun en itse mistään löydä ohjeita moiseen tarkistukseen. Ei nyt tuota helmikuun tarkistusta tarvitse sentään olla :P
No tämä kelpuuttaa arvot 01 - 31, pystynet itse jatkamaan loppuun:
^(0[1-9])|([12][0-9])|(3[01])$
Grez kirjoitti:
No tämä kelpuuttaa arvot 00 - 31, pystynet itse jatkamaan loppuun:
^(0[1-9])|([12][0-9])|(3[01])$
Kiitos.
ystäväsi on checkdate https://www.php.net/manual/en/function.
Tässä tulee hieman aiheeseen liittyvää teoriaa:
Jos kelvollisilla merkkijonoilla on jokin maksimipituus (tässä kuusi merkkiä), on aina mahdollista muodostaa niitä vastaava säännöllinen lauseke.
Suoraviivainen tapa on luetella kaikki vaihtoehdot:
(010100|020100|030100| ... |311299)
Niinpä on mahdollista muodostaa säännölliset lausekkeet, jotka tarkistavat, onko merkkijono suomalainen henkilötunnus, jonkin ennen 2000-lukua painetun kirjan sisältö, alle miljoonamerkkinen tietokoneohjelma, joka ratkaisee kauppamatkustajan ongelman polynomisessa ajassa, ...
Kannattaa silti pitää mielessä, että säännölliset lausekkeet ei aina ole järkevin vaihtoehto lähestyä asiaa. Esimerkiksi tuon henkilötunnuksen tarkistaminen ei mielestäni ole järkevää tehdä kokonaan säännöllisillä lausekkeilla. Itse hakisin ehkä massasta muodollisesti pätevät ja tarkistaisin tarkisteen muulla keinolla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.