Avatar billede flushout Nybegynder
16. december 2005 - 13:57 Der er 13 kommentarer og
1 løsning

Problem med regulært udtryk!

Hejsa

Jeg er ved at lave et lille program, hvor brugeren kan skal indtaste en eller flere uger separeret af komma i et input felt. Jeg vil gerne benytte et regulært udtryk til at validere det. Det det skal kunne acceptere er:

- Gyldige ugenumre dvs. tal mellem og inklusiv 1 og 53

- En usorteret eller sorteret liste af ugenumre separeret af komma f.eks:
1,36,24,12,50
eller:
1,12,24,36,50

Jeg har forsøgt lidt, men kan ikke få det til at fungere. Her er den sammenhænge jeg gerne vil bruge det i:

if(preg_match('/MIT UDTRYK DER IKKE FUNKER/',$ugeliste)){
  print 'Korrekt udtryk';
}
else {
  print 'Forkert udtryk';
}

På forhånd tak for hjælpen =)
Avatar billede erikjacobsen Ekspert
16. december 2005 - 14:01 #1
if(preg_match('/^(\d+)(,\d+)*$/',$ugeliste)){
Avatar billede erikjacobsen Ekspert
16. december 2005 - 14:01 #2
Den tjekker ikke for numre over 53
Avatar billede flushout Nybegynder
16. december 2005 - 14:08 #3
Kan man gøre sådan her og så ihvertfald sikre sig at det ikke er numre over 99?

'/^(\d{1,2}+)(,\d{1,2}+)*$/'
Avatar billede erikjacobsen Ekspert
16. december 2005 - 14:13 #4
Jo, hvis du lige fjerne "+"-erne
Avatar billede flushout Nybegynder
16. december 2005 - 14:17 #5
Er det meget besværligt at tjekke om numrene er mellem 1 og 53 .. Det ville være fedt at få det tjek med også.. (jeg er ikke specielt god til reg exp endnu)

Hvis det er meget besværligt så er det ok med tjekket for tal mellem 1 og 99 ..
Avatar billede flushout Nybegynder
16. december 2005 - 14:20 #6
Kunne det her virke eller er jeg helt galt på den?

'/^([1-5]{1}[0-9]?)(,[1-5]{1}[0-9]?)*$/'
Avatar billede flushout Nybegynder
16. december 2005 - 14:21 #7
Det vil så vidt jeg ved begrænse det fra 1 til 59 ?
Avatar billede erikjacobsen Ekspert
16. december 2005 - 14:24 #8
[1-5]{1}[0-9]?  - så kan du ikke skrive uge 8

Du skal alligevel efterfølgende tjekke for om uge 53 er lovlig, så det nemmeste er at lave tjekket der

Men du kan da tjekke for det, et tal mellem 1 og 53

  \d|[1-4]\d|5[0-3]
Avatar billede erikjacobsen Ekspert
16. december 2005 - 14:25 #9
Og sæt en parentes om, ellers får du for meget med:  (\d|[1-4]\d|5[0-3])
Avatar billede flushout Nybegynder
16. december 2005 - 14:27 #10
ok det vil sige:

'/^((\d|[1-4]\d|5[0-3]))(,(\d|[1-4]\d|5[0-3]))*$/'

skulle kunne gøre det?
Avatar billede erikjacobsen Ekspert
16. december 2005 - 14:52 #11
Det tror jeg. Prøv.
Avatar billede flushout Nybegynder
19. december 2005 - 10:28 #12
ok.. det funkede =) Tusind tak for hjælpen.. Smid et svar så får du points..
Avatar billede erikjacobsen Ekspert
19. december 2005 - 14:08 #13
Jeg samler slet ikke på point, tak. Svar selv, accepter eget svar.
Avatar billede flushout Nybegynder
21. december 2005 - 10:28 #14
ok.. hermed et svar =)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester