[PHP / Regex] Username valideren op bepaalde tekens

Pagina: 1
Acties:
  • 35 views sinds 30-01-2008

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik probeer een regex te schrijven die een username valideert. De bedoeling is dat alleen kleine letters, cijfers en de karakters _ en - worden goedgekeurd. Ik dacht dat te kunnen doen met:
PHP:
1
2
if (!ereg("[_a-z0-9-]", $username)) {
  return 'Username bevat andere karakters dan numeriek, _ en -';

Maar hij laat alle mogelijke combinaties toch door. Wat doe ik verkeerd?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Er moet nog een + achter je character class, en een ^ ervoor en een $ erachter om te zorgen dat de hele string gematched moet worden:
PHP:
1
2
if (!ereg("^[_a-z0-9-]+$", $username)) {
  return 'Username bevat andere karakters dan numeriek, _ en -';

Of wat waarschijnlijk beter is:
PHP:
1
2
if (ereg("[^_a-z0-9-]", $username)) {
  return 'Username bevat andere karakters dan numeriek, _ en -';

De regex die jij verzonnen hebt matcht elke user die tenminste één van die legale tekens bevat. Maar dat had je zelf ook makkelijk uit kunnen vinden in de eerste de beste regex tutor, en daarom doe ik je topic ook op slot.

[ Voor 15% gewijzigd door NMe op 15-08-2005 21:09 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.