Gå til innhold

Sliter med preg_match


Anbefalte innlegg

Sliter med å få valideringen av dato og tid til å funke med preg_match, noen som kan se hva som er feil i scriptet?

 

$post_dato = 22. mars

$post_tid = 20:55

 

     
 if(preg_match("[^[01-31]{1,2}.[ ]{0,1}[a-z]{3,5}$]", $post_dato) && preg_match("[^[01-24]{2}:[00-59]{2,2}$]", $post_tid))

Lenke til kommentar
Videoannonse
Annonse

Oh man! Have you got it wrong... ;)

 

En character class (Det som står mellom []) representerer bare ETT tegn. Når du skriver [01-31] så vil ikke regexmotoren skjønne at den skal sjekke to tegn. Den vil bare godta ETT tegn som er enten 0, 1, 2 eller 3. Med {1,2} bakom så får du klassen til å kunne matche 2 tegn, men fortsatt bare med kombinasjonene av 0,1,2 eller 3.

 

Omskrevet så må du skrive ([0-2]?[0-9]|3[01]). Dette betyr: mulig 0-2 etterfulgt av 0-9 eller 3 etterfulgt av 0 eller 1.

 

Så var det klokka da. Vanligvis så vil den gå fra 00:00 - 23:59, og ikke fra 01:00 - 24:59 :p

Og siden regex ikke skjønner hva du mener med [01-24] eller [00-59], så må vi skrive om.

Timer: [01][0-9]|2[0-3]

Minutter: [0-5][0-9]

Resultatet blir da sånn ca.:

if (preg_match("[^([0-2]?[0-9]|3[01])\. ?[a-z]{3,5}$]",$post_dato) && preg_match("[^([0-1][0-9]|2[0-3]):[0-5][0-9]$]",$post_tid))

Lenke til kommentar

Ehh. Føler ikke at jeg har tid til å skrive tutorial på noe så omfattende som regular expressions for øyeblikket. Men jeg ser helt klart nytten i en god norsk tutorial.

 

Til nå har jeg henvendt folk som vil lære mer til disse sidene:

php manualen...

http://en.wikipedia.org/wiki/Regex

http://www.regular-expression.info/

 

Ellers så er jo denne et must for de som mener det... :)

regex2.s.gif

+pocket-guiden.

Utdrag av PHP biten fra pocketguiden

Lenke til kommentar
if (preg_match("[^([0-2]?[0-9]|3[01])\. ?[a-z]{3,5}$]",$post_dato) && preg_match("[^([0-1][0-9]|2[0-3]):[0-5][0-9]$]",$post_tid))

 

Men den der var jo litt smartere, var litt redd for at det var noe såmnnt jeg hadde gjort galt, men men. Skal sjekke nå:)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...