[Regex] invoer validatie in java

Pagina: 1
Acties:

  • turkosh
  • Registratie: December 2003
  • Laatst online: 26-04 23:11
Ik heb na enig rondspeuren het volgende regex gevonden die gebruikt kan worden voor invoervelden:
code:
1
^(?!.*\s).{8,12}$

Hier staat dus eigenlijk: alle karakters (min 8 en max 12 tekens) zonder spaties. Met die regex test tooltjes op internet werkt het wel.
Als ik dit stukje converteer naar java string dan krijg ik het volgende:
code:
1
"^(?!.*\\s).{8,12}$"


wanneer ik gebruik maak van java.util.regex api voor validatie, dan gaat het fout wanneer ik in de invoer veld een spatie aan het begin of een spatie aan het eind zet. Dan loopt het succesvol door de validatie heen terwijl het geen match zou moeten zijn.
Hoe kan ik nog expliciet afdwingen dat er aan het begin en aan het eind ook geen spatie mag zijn?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Anders zoek je even op wat \s betekent. Of wat uberhaupt zo'n Pattern Syntax is.

{signature}


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Waarom gebruik je niet gewoon ^[^\s]{8,12}$ als regexp?

'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.


  • Dnomaid
  • Registratie: Augustus 2003
  • Laatst online: 12:42
Moet je die andere characters ook niet escapen (?!.*) ?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

BobbyD82 schreef op woensdag 31 januari 2007 @ 15:56:
Moet je die andere characters ook niet escapen (?!.*) ?
Ik denk dat jij even op moet gaan zoeken wat een (negative) lookahead assertion is. :P

'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.


  • turkosh
  • Registratie: December 2003
  • Laatst online: 26-04 23:11
ik denk dat ik ook moet kijken naar wat trim() betekent 8)7
Beetje teveel gefocust op regex i.p.v. de code daaromheen.

  • Dnomaid
  • Registratie: Augustus 2003
  • Laatst online: 12:42
-NMe- schreef op woensdag 31 januari 2007 @ 16:01:
[...]

Ik denk dat jij even op moet gaan zoeken wat een (negative) lookahead assertion is. :P
ik weet best waarvoor ^() dient, ik dacht alleen dat de characters dat je daartussen steekt ook moet escapen (?!.*), aangezien hij hier echt op tekens filtert en niet op regex special characters ... zo onlogisch?

Verwijderd

Typisch voorbeeld om GEEN (volledige) regex te gebruiken. Het enige waar regex interessant zou kunnen zijn is het valideren van whitespaces. Maar lengte doe je simpelweg niet met regex.
Pagina: 1