[reg exp] Hoe lengte van de te testen string beperken?

Pagina: 1
Acties:

  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
We hebben weer eens een probleempje... Stel je hebt een veld dat enkel de letters a-z en A-Z mag bevatten. Met reguliere expressies is dat makkelijk op te vangen als:

^[a-zA-Z]$

Stel nu dat dit veld minstens 1 letter lang moet zijn, en maximaal 20 lang. Ook dit is weer eenvoudig met reguliere expressies:

^[a-zA-Z]{1,20}$

Tot zover de eenvoudige voorbeeldjes. Stel nu een ietwat complexer voorbeeld: het controleren van een e-mailadres. Met reguliere expressies krijgen we iets als:

^[a-zA-Z0-9_.-]{1,}@[a-zA-Z0-9-]{1,}\.[a-zA-Z]{1,}$

Nu zou ik graag ook hier de veldlengte beperken. Ik kan wel per blok met {,x} de lengte beperken, maar niet van het totale veld. Is dit mogelijk met reguliere expressies?

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

waarom zou je dat in dezelfde regexp willen stoppen? je kan toch simpelweg eerst de lengte bepalen, en als die voldoet kijken of de string aan de expressie voldoet?

Intentionally left blank


  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
Ik vroeg me gewoon af of dat mogelijk is. Natuurlijk kan ik apart op de lengte controleren, maar ik heb al zo vaak gehad dat ik iets heb geprogrammeerd waarvan achteraf blijkt dat het in één simpele opdracht kan gedaan worden. Daarmee dat ik het nu maar even vraag :)

Ik heb een boek besteld over reguliere expressies zodat die dingen me eens en voor altijd duidelijk zijn, maar de levering door Proxis laat op zich wachten.

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


  • bakkerl
  • Registratie: Augustus 2001
  • Laatst online: 03-07 18:45

bakkerl

Let there be light.

offtopic: de reg exp voor de email is niet geheel compleet er mist een .
^[a-zA-Z0-9_.-]{1,}@[a-zA-Z0-9-.]{1,}\.[a-zA-Z]{1,}$

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-08 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

En nu blijkt achteraf dat het met 2 simpele opdrachten gedaan kan worden ;)

Wat ik probeer te zeggen is: staar je niet blind op iets, en bovendien wordt het met een minder aantal statements alleen maar cryptischer en onleesbaarder. Een simpele strlen () check voldoet toch ook? Waarom zou je dat in een regex willen verwerken?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mahi
  • Registratie: Juni 2001
  • Laatst online: 03-10-2025

mahi

God bless GoT

Topicstarter
bakkerl: Bedankt voor je toevoeging!

.oisyn: Waarschijnlijk heb je gelijk, maar omdat de kracht van reguliere expressies me altijd heeft vebaasd, ging ik er eigenlijk min of meer al van uit dat dit op een of andere manier ook wel mogelijk zou zijn. En misschien is het minder goed leesbaar, tsjah... Ik weet wat er staat en wat het moet doen :)

Anyway, ik heb ondertussen al een strlen geïmplementeerd.

Bedankt iedereen voor z'n input! :)

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.

Pagina: 1