login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Regular Expressions (Opgelost)

Offline Louis_ - 24/02/2010 14:02
Avatar van Louis_Nieuw lid Ik probeer op het moment regular expressions te begrijpen. (ik heb net zo'n beetje elke beginners tutorial over dit onderwerp gelezen..) Maar het wil maar niet werken.

Dit is mijn code:
  1. if (!preg_match("/[A-Za-z0-9]*/", $gebruikersnaam))
  2. {
  3. echo "Je gebruikersnaam is niet geldig.";
  4. }


Ik wil dus dat hij een error weergeeft als een gebruikersnaam iets anders dan [A-Z], [a-z] en [0-9] bevat. Maar er komt geen error..
Wat doe ik fout?

13 antwoorden

Gesponsorde links
Offline marten - 24/02/2010 14:09
Avatar van marten Beheerder
  1. if (!preg_match("([A-Za-z0-9-]+)", $gebruikersnaam))
  2. {
  3. echo "Je gebruikersnaam is niet geldig.";
  4. }


en zo?
Offline ArieMedia - 24/02/2010 14:26
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
marten schreef:
[..code..]

en zo?
Moet je de laatste - niet escapen?

  1. if (!preg_match("([A-Za-z0-9\-]+)", $gebruikersnaam))
  2. {
  3. echo "Je gebruikersnaam is niet geldig.";
  4. }


Zo dus, aangezien de - een hecht-teken is

Ik doe dat namelijk wel altijd xD
Offline TotempaaltJ - 24/02/2010 17:18
Avatar van TotempaaltJ PHP interesse
ArieMedia schreef:
Moet je de laatste - niet escapen?

Welke laatste -? De enige -'s die erin staan zijn van A-Z, a-z en 0-9, niks geen - die je zou moeten escapen!
Offline vinTage - 24/02/2010 17:44
Avatar van vinTage Nieuw lid
TotempaaltJ schreef:
[..quote..]
Welke laatste -? De enige -'s die erin staan zijn van A-Z, a-z en 0-9, niks geen - die je zou moeten escapen!


En wat staat er dan als laatste teken in martens's regex ? !
Offline YesItIsChris - 24/02/2010 19:02 (laatste wijziging 24/02/2010 19:03)
Avatar van YesItIsChris Nieuw lid
  1. if( !preg_match( "/^[A-Za-z0-9\-]+$/", $string ) ) {
  2. error
  3. }
Bedankt door: Louis_
Offline TotempaaltJ - 24/02/2010 20:51
Avatar van TotempaaltJ PHP interesse
vinTage schreef:
En wat staat er dan als laatste teken in martens's regex ? !
Die is ook fout:
Louis_ schreef:
Ik wil dus dat hij een error weergeeft als een gebruikersnaam iets anders dan [A-Z], [a-z] en [0-9] bevat. Maar er komt geen error..
Daar zit geen - in, of wel? 
Offline Stijn - 24/02/2010 21:04
Avatar van Stijn PHP expert
  1. preg_match("~\w+~" , $...)


Dit is beter. Die \w is een regex klasse die [A-Za-z0-9-] voorstelt. Die + zegt dat het minstens één teken moet bevatten. Als je {5,} zet, dan zijn het er minstens 5 tekens. En die ~ geven aan waar de regex start en stopt.
Offline vinTage - 24/02/2010 21:50
Avatar van vinTage Nieuw lid @Stijn, ik wilde eigenlijk ook al opperen dat je wss beter afwas met \w , maar die ondersteund ook newlines dacht ik, na 1 seconden googlen wist ik het nog niet zeker, dus zweeg ik maar (ik weet het eigenlijk nog niet zeker, maar als het zo is, dan lijkt me dat niet de juiste oplossing ?)

@ TotallospaaltJ, je reageerde op ArieMedia, dus wat zwans je nou ?
Offline TotempaaltJ - 25/02/2010 10:20
Avatar van TotempaaltJ PHP interesse Ik had net zo goed op Marten kunnen reageren! En 't is TotempaaltJ.
Offline Ibrahim - 25/02/2010 20:41
Avatar van Ibrahim PHP expert Nee, de reden dat hij niet werkt is omdat jou regex al 1 letter/cijfer zal matchen als het in de input staat. Je bent de operators "^" en "$" wat de regex interpreter vertelt om het begin en eind te matchen en niet binnen in de tekst.

Ik hoop dat ik duidelijk genoeg heb uitgelegd, anders moet je maar vragen!
Offline Louis_ - 26/02/2010 13:32 (laatste wijziging 26/02/2010 13:41)
Avatar van Louis_ Nieuw lid Het is me nog steeds niet erg duidelijk..

Die van ArieMedia geeft een error als de gebruikersnaam bijv ";;;" is, maar "hhhs;;;" en ";;;gesfsd" laat hij wel toe.

De rest heb ik nog niet getest, maar ik ook graag snappen wat ik fout doe. 

edit: Die van YesItIsChris werkt goed.
  1. !preg_match("/^[A-Za-z0-9\-]+$/", $gebruikersnaam)


Nu nog even uitzoeken waarvoor die "\-" staat...
En die "+"...
Offline TotempaaltJ - 26/02/2010 23:56
Avatar van TotempaaltJ PHP interesse Die \- staat ervoor - zoals ik al de hele tijd zeg - dat er ook een minnetje in de gebruikernaam mag staan, deze mag je dus weghalen. Die + zorgt ervoor dat er in ieder geval meer dan een van deze tekens (A-Z, a-z, 0-9 of -) in $gebruikersnaam moeten staan!
Offline Koen - 27/02/2010 11:05
Avatar van Koen PHP expert Misschien is het ook even handig om de bekende Regular Expressions Cheat Sheet te vermelden in dit topic.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.272s