Avatar billede lillebror Nybegynder
25. juni 2004 - 16:14 Der er 11 kommentarer og
1 løsning

Regular expression hjælp

Jeg har skal have lavet en regular expression, til at verifisere en streng, problemet er bare at jeg ikke kan finde ud af at lave sådan en. Jeg håber derfor der er en venlig sjæl, der vil hjælpe mig med at konstruere den.

Den skal bruges som betingelse i en if, den må kun returnere true, hvis strengen enten indeholder et hvilket som helt tal, eller bogstavet a. Hvordan grejer man sådan en?
Avatar billede dennismp Nybegynder
25. juni 2004 - 16:18 #1
du behøver ikke regex til det..

if( $str == 'a' || ctype_digit($str) ) {
  gør noget
}
Avatar billede ridefisken Nybegynder
25. juni 2004 - 16:22 #2
du bruger preg_match("/.*(a|\d).*/");
jeg kan ikke huske om \d matcher et tal, men det mener jeg.
funktionen returnerer det antal gange regexp'en matcher stregnen.
læs mere: http://dk.php.net/manual/en/function.preg-match.php
Avatar billede lillebror Nybegynder
25. juni 2004 - 16:24 #3
Strengen vil aldrig bestå af tal alene, jeg har brug for at tjekke om der er et tal i strengen! så vidt jeg ved så tjekker ctype_digit, om alle tegn er tal
Avatar billede dennismp Nybegynder
25. juni 2004 - 16:28 #4
er
1: abcdefg  ok?
2: abecdef2  ok?
3: 1919191a  ok?
4: 1        ok?
5: a        ok?
Avatar billede lillebror Nybegynder
25. juni 2004 - 16:29 #5
Det var lige hvad der skulle til ridefisken, tak for det!
Avatar billede lillebror Nybegynder
25. juni 2004 - 16:30 #6
ZaZ er ok
Z1Z er ok

De eneste to scenarier der vil forekomme er ZaZ og ZxZ hvor x er et hvilket som helt tal
Avatar billede dennismp Nybegynder
25. juni 2004 - 16:30 #7
Hvis allesammen er ok så burde ridefisken regex virke, udover at man ikke behøver de to sæt ".*"
Avatar billede lillebror Nybegynder
25. juni 2004 - 16:33 #8
oki, i hvert fald virker ridefiskens regex, det kører som det skal nu
Avatar billede ridefisken Nybegynder
25. juni 2004 - 16:33 #9
hmm.. næ. du har ret :)
men jeg kan godt lide at være explicit.
Avatar billede ridefisken Nybegynder
25. juni 2004 - 16:33 #10
og tak for points :)
Avatar billede dennismp Nybegynder
25. juni 2004 - 16:47 #11
explicit må da være:
preg_match('/^.*(a|\d).*/$');

Ellers er det jo spildt arbejde at den matcher med .* :-)
Avatar billede ridefisken Nybegynder
25. juni 2004 - 16:50 #12
implicit, nem metode: preg_match('a|\d')
explicit, lang metode: preg_match('/^.*(a|\d).*$/)

så er vi enige :)
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