Toon posts:

[PHP] simpele regexp frustratie...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik bouw de meest ingewikkelde regexps, maar kan iemand mij vertellen waarom dit niet werkt?
code:
1
2
3
if(!preg_match("/.[\.\- a-z0-9]*?/i", $username)) {
    print "Ongeldige username";
}

Ik moet een username checken op ongeldige tekens... Alleen letter, cijfers, -, . en spaties zijn toegestaan. Wie het weet mag het zeggen :)

  • tomato
  • Registratie: November 1999
  • Niet online
Oscar Alexander: Ik bouw de meest ingewikkelde regexps
Dat is een grapje? Het is namelijk absoluut niet af te leiden uit de code die je hier onder geeft... :o
, maar kan iemand mij vertellen waarom dit niet werkt?
Euh... het gaat in ieder geval eerder om 4 redenen fout dan om 1. Er scheelt nogal wat aan dus ;)

Verwijderd

Topicstarter
Ik zeg niet dat ik een regexp koning ben... (anders was dit wel gelukt), maar ik heb in iedergeval veel ingewikkeldere dingen gedaan dan dit hier. Daarom snap ik er geen reet van dat het niet werkt...

Maar wel tof dat je even een oplossing geeft :?

Verwijderd

Waar slaat die punt op in het begin? Waarom *? je wilt de hele string toch checken? Ik zou meer in deze richting denken:
code:
1
/^[\.\-a-z0-9 ]+$/i

Verwijderd

Topicstarter
Heb 'm al...

preg_match("/^[\.\- A-Za-z0-9]+$/", $username);

Wist niet dat je een + moest gebruiken... Oh well.

  • tomato
  • Registratie: November 1999
  • Niet online
Oscar Alexander: Maar wel tof dat je even een oplossing geeft :?
Als je ook maar iets ingewikkelders gedaan hebt dan dit, zou je weten wat een . (punt) betekent in een regex. Zelfde geldt voor een . binnen een character class, zelfde geldt voor een * in een regex, zelfde geldt voor een ? achter een *. Zelfde geldt ook voor ^ en $ ook al heb je dit niet gebruikt.

Met andere woorden, je gegeven regex past voor geen meter bij je omschrijving, ik heb dan ook werkelijk geen flauw idee hoe je erbij komt dat dit zou moeten werken.

Deze post van mij is natuurlijk alleen gerechtvaardigd als je al enige ervaring met regexen hebt en gezien je post mag ik daarvan uitgaan.
Pagina: 1