Jeg sidder og knokler lidt med at forsøge at blive bedre til at forstå og skrive regexps. Jeg har leget med det før i tiden, men... :)
Sagen er den, at jeg vil validere at et sagsnummer er ok.
Sagsnummeret har formaten id1000 og derover. Det betyder at følgende skal tjekkes:
1. Starter strengen med upper/lowercase id? 2. Tallet efter id skal være >= 1000 og <= 1000000.
Nr. 1 er simpel nok, /^id/i... Nr. 2 giver mig lidt mere hovedbrud da jeg ikke rigtig ved hvordan den virker med tal. Min første newbie løsning er at tjekke om det første tegn efter id er 1-9 (den skal naturligvis ikke kunne være 0). Dernæst skal der så kunne være 3-5 tal.
Det har fremfødt følgende, som jeg desværre tror er noget værre pladder:
/^id[1-9]{1}[0-9]{3-5}/i
Kan I hjælpe med at få denne gjort rigtig og/eller oplyse om jeg har taget den besværlige måde at gøre det på?
Nu er regexp ikke specielt velegnet til at lave numeriske sammenligninger i stil med dit punkt 2. Det bliver som regel rimeligt grimt ret hurtigt. Men det kan da gøres:
Jeg må give nielle ret - man skal (normalt) kun checke ren struktur i regulære udtryk. Mit forslag vil være at kontrollere at der står "id" efterfulgt af cifre, i det regulære udtryk. Derefter i en if-sætning, og det er mellem 1000 og 1000000.
Forestil dig, at du pludselig får at vide, at nu er øvre grænse 1100000. Hvor nemt er det at ryste et regulært udtryk ud af ærmet? Hvor nemt er det at rette et tal i en if-sætning?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.