Toon posts:

[Perl] Patroonvergelijking

Pagina: 1
Acties:

Verwijderd

Topicstarter
code:
1
if ($form{'criteria'} =~ /^[a-zA-Z0-9_ ]{3,}$/) {

De code werkt geheel naar behoren. Echter wil ik ook een dash (-) toestaan, maar zodra ik die er in plaats, zoals hieronder getoond, dan gaat het programma keihard op z'n bek:
code:
1
if ($form{'criteria'} =~ /^[a-zA-Z0-9_ \-]{3,}$/) {

Iemand die week wat er fout gaat?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-08 00:10
Define "keihard op z'n bek"?

Je hoeft die dash trouwens niet te escapen als je 'm aan 't begin of aan 't eind van je bracket expression zet.

Verwijderd

Topicstarter
Wanneer ik die dash erin plaats, keurt hij alle karakters goed zolang het er maar 3 zijn.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Probeer (zoals Soultaker feitelijk al oppert) die backslash eens weg te halen.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Werkt ook niet.

Heb um vooraan gezet met en zonder, achteraan gezet met en zonder, en ergens in het midden met en zonder... :?

  • oVRoM
  • Registratie: Juli 2000
  • Niet online
Wat werkt er precies niet?
Met het volgende script:
Perl:
1
if ($ARGV[0] =~ /^[a-zA-Z0-9_ \-]{3,}$/) { print "Yes!\n"; } else { print "No!\n"; }

Krijg ik:
ovrom@selenium$ perl test TE0
Yes!
ovrom@selenium$ perl test TE$
No!
ovrom@selenium$ perl test TE-
Yes!
ovrom@selenium$ perl test T-T
Yes!
ovrom@selenium$ perl test $-$
No!
ovrom@selenium$ perl test BLa
Yes!
ovrom@selenium$ perl test -La
Yes!
Dat lijkt me toch precies zoals je wil?

[ Voor 5% gewijzigd door oVRoM op 14-10-2003 18:08 . Reden: Quote tags ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

't Is volgens mij ook een prima regex. Weet je wel zeker dat die $form{'criteria'} wel de goede waarde bevat op 't moment dat je 't gaat verwerken?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Ziet er goed uit. Test dit ook eens met een pipe? Daar gaat het bij mij mis...

Verwijderd

Topicstarter
drm schreef op 14 October 2003 @ 18:06:
't Is volgens mij ook een prima regex. Weet je wel zeker dat die $form{'criteria'} wel de goede waarde bevat op 't moment dat je 't gaat verwerken?
ik heb de juiste waarden in $form{'criteria'} zitten...

  • oVRoM
  • Registratie: Juli 2000
  • Niet online
Verwijderd schreef op 14 October 2003 @ 18:07:
Ziet er goed uit. Test dit ook eens met een pipe? Daar gaat het bij mij mis...
ovrom@selenium$ perl test 0\|L
No!
Edit: Je kunt het zelf even proberen via http://selenium.nullium.net/cgi-bin/prospector.pl?teststring

Edit 2:
Perl:
1
$ENV{'QUERY_STRING'} =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

erbij gezet, ' ' wordt nu bijvoorbeeld weer netjes van '%20' -> ' ' gezet :)

[ Voor 39% gewijzigd door oVRoM op 14-10-2003 19:36 ]


  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 20-08 18:13

TrailBlazer

Karnemelk FTW

zit er een spatie tussen de _ en de - het lijtk er wel op. Als je er een spatie in wil meot je \s gebruiken

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

TrailBlazer:
zit er een spatie tussen de _ en de - het lijtk er wel op. Als je er een spatie in wil meot je \s gebruiken
:? da's nieuw voor mij...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
TrailBlazer schreef op 14 oktober 2003 @ 18:11:
zit er een spatie tussen de _ en de - het lijtk er wel op. Als je er een spatie in wil meot je \s gebruiken
Het staat in een tekenklasse, waardoor het gewoon moet werken met een spatie... De \s staat ook voor een enter, tab of carriage-return, en dat wil ik niet...

  • oVRoM
  • Registratie: Juli 2000
  • Niet online
ovrom@selenium$ perl test "b a"
Yes!
Met spatie werkt 'ie idd gewoon netjes hoor.
Pagina: 1