preg_match der ikke helt matcher

Tags:    php

Hej Alle!

Jeg er ved at forsøge at validere noget input vha. preg_match("regex", $variabel)

Jeg har en værdi fra en form der kun må indeholde:
små bogstaver a-z
tal 0-9
slash og bindestreg /-
Desuden SKAL det starte med /

ALLE andre tegn skal resultere i at data ikke bliver valideret og kan sendes videre.

Det jeg har lavet ser sådan ud, men når jeg "opfylder kravene", dvs. når jeg har et eller flere af de tegn med som der er i mønstret, OG inkluderer tegn som f.eks *^€£@£, så får jeg ikke min fejl besked selvom der er forkerte tegn med ud over a-z0-0/-

Det jeg har ser sådan ud:
Fold kodeboks ind/udPHP kode 

Det virker sådan at hvis der ikke startes med /, så kommer der en fejl. Så langt så godt, men som beskrevet ovenfor så har jeg ikke lavet det så der UDELUKKENDE accepteres:
små bogstaver, tal, /, -

Hvad gør jeg galt?

Med Venlig Hilsen,
Jan Klemmensen



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du skal sikre dig at din regex matcher på hele strengen. Dvs. du skal bruge ^ og $. Og du skal så matche på 3 eller flere karakterer fra gruppen [-0-9a-z/], så du skal bruge {3,} istedet for {3}. Prøv noget i stil med:
Fold kodeboks ind/udPHP kode 

det burde virke...



Hej AH,

Mane tak for dit svar!

Det lader jo til at det virker :-)

Jeg tænkte på om jeg kan få dig til at lave en lille breakdown for mig så jeg bedre forstår hvad der sker?

Hvad betyder det når du starter reqex med #, og slutter det med #?

Hvis jeg vil have det til at matche hele strengen, men ikke har en minimums længde på 3, som ved ovenstående. Hvad skriver jeg så for at inkludere hele strengen? Skal jeg bare udelade {}, eller skrive {0,} så der ikke er defineret noget, og så tager den hele strengen med?
Eller er det det som # ..... # gør?

Hvis jeg vil tjekke en hel streng på små bogstaver, store bogstaver, tal og !-?/
Er dette så korrekt:
Fold kodeboks ind/udPHP kode 


Tilader man også automatisk mellemrum her, eller forårsager de en fejl?

Mvh,
Jan




Indlæg senest redigeret d. 14.11.2011 21:20 af Bruger #16555
t