Gå til innhold

hvordan konstruere regular expression


Anbefalte innlegg

Regular expression er seriøst en utfordring.

 

http://www.phpbuilder.com/columns/dario19990616.php3

 

Har lest på artikkelen ovenfor, men det blir aldri orden i systemet.

 

Jeg er ute etter to forskjellige "ekspresjoner", og håper noen kan skrive kodesnutten og ikke minst forklare de :)

 

1) a-å store og små, 0-9 og spesialtegn _ . , - lenge mellom 4 og 10 bokstaver

 

2) a-å store og små, 0-9 lengde mellom 4 og 15

Lenke til kommentar
Videoannonse
Annonse

Lær deg å skriv skikkelige regulære uttrykk. PHP sin funksjon ereg() er treg. Lærer du deg regulære uttrykk vil det funke i de fleste språk samt at du får en bedre forståelse

 

Vet ikke om jeg forstod helt eneren. "og spesialtegn _ . , - lenge..."?

 

2 er iallfall enkel:

 

[a-zæøå0-9]{4,15}

 

Bruk modifieren 'i' som gjør at utrykket ser bort i fra store/små bokstaver. Eksempel på bruk av utrrykket i funksjon

 

preg_replace("/[a-zæøå0-9]{4,15}/i", ...)

 

Alt mellom [ og ] er tillatte bokstaver. a-z betyr a til z. Vi må inkludere æ, ø og å fordi PHP normalt sett ikke oppfatter a-å som en serie av bokstaver fra a til å slik som vi kjenner til dem. {4, 15} betyr at bokstavene mellom [ og ] kan være utrrykt 4 til og med 15 ganger.

Lenke til kommentar

mente spesialtegnene underscore, komma, punktum og bindestrek. lenge skulle bli lengde, men ble litt vanskelig å lage en bra setning ettersom punktum kunne missforstås... ser bra ut det eksempelet du har på nr. to, husker spesielt at et problem jeg hadde med disse var at den kun lette etter et eksempel av det jeg forlagte, dvs at [a-z]{1,3} godkjente alt som hadde mellom 1 og 3 av bokstavene a-z. men skal se om det fungerer det du skriver :)

Lenke til kommentar
{4, 15} betyr at bokstavene mellom [ og ] kan være utrrykt 4 til og med 15 ganger.

Betyr dette at jeg må bruke en annen php-funksjon for å kontrollere at samlet lengde ikke blir over et visst antall?

 

For abcd-------- oppfyller kravet om at de nevnte tegnene skal komme mellom 4 og 15 ganger?

Lenke til kommentar
Betyr dette at jeg må bruke en annen php-funksjon for å kontrollere at samlet lengde ikke blir over et visst antall?

 

For abcd-------- oppfyller kravet om at de nevnte tegnene skal komme mellom 4 og 15 ganger?

Funksjonen sjekker om antall tegn er mellom fire og femten... Du behøver ikke noe utenom den.

 

Du kan heller ikke bruke '-', siden funksjonen bare godtar a-å og 0-9.

Lenke til kommentar
{4, 15} betyr at bokstavene mellom [ og ] kan være utrrykt 4 til og med 15 ganger.

Betyr dette at jeg må bruke en annen php-funksjon for å kontrollere at samlet lengde ikke blir over et visst antall?

 

For abcd-------- oppfyller kravet om at de nevnte tegnene skal komme mellom 4 og 15 ganger?

{4, 15} betyr minst 4 og maks 15 tegn, {2} betyr maks 2 tegn og ikke mindre heller. {4, } betyr minst 4 tegn og ellers så mange man vil.

 

du kan også bruke + * ? etter en parentes som bestemmer hvor mange av det inni parentesen er lov. (hva + * ? betydde husker jeg ikke, men det stod i den artikkelen du postet).

 

EKS:

 

(([a-zæøå0-9\.])*){4, 15}

Lenke til kommentar

robgear: Eksempelet ditt var litt snålt. Det betyr rett og slett at a-zæøå0-9 og punktum kan være uttrykt uendelig mange ganger eller null ganger. Dette igjen kan være uttrykt fire til femten ganger. 4 * 0 = 0.

4 * uendelig = uendlig

 

Med andre ord, {4, 15} har her ingen nytte. Det har i grunn ikke parantesene heller.

 

For å bruke "vanlig" regulæruttrykk må man bruke preg_*-funksjonene til PHP. Ereg er en forenklet regulærutgave kan man si.

 

1) a-å store og små, 0-9 og spesialtegn _ . , - lenge mellom 4 og 10 bokstaver

 

Bare å følge det første eksempelet mitt. Men inkluder de nye tegnene. '.' (punktum) og '-' (bindestrek) regnes som spesialtegn da punktum representerer et tilfeldig tegn, mens bindestrek markerer en range. Disse må derfor escapes.

 

[a-zæøå0-9_,\-\.]{4,15}

 

Husk å bruk modifieren 'i'. :)

Lenke til kommentar
  • 2 måneder senere...

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...