Forum Doku Wiki Blog

Forumsarchiv 2001, August
Variable in Regulärem Ausdruck

archivierte Beiträge lesen

  1. (PHP) Variable in Regulärem Ausdruck von Stefan Kleeschulte, 10. 08. 2001, 23:49

Variable in Regulärem Ausdruck

Der folgende Beitrag wurde am 10. 08. 2001, 23:49 Uhr von Stefan Kleeschulte veröffentlicht.

Hi zusammen!

Ich habe folgendes Problem: Ich möchte mit Hilfe eines Regulären Ausdrucks einen Benutzernamen auf richtigkeit Prüfen. In einer Konfigurations-Datei ist unter anderem festgelegt, wie lang der Benutzername mindestens sein muss und höchstens sein darf (in Variablen gespeichert).

Wie kann ich nun im Regulären Ausdruck auf diese Variablen zurückgreifen?

Zur verdeutlichung was ich bräuchte, was aber nicht klappt:
/^\b[\w\-.]{$nickname_minlength,$nickname_maxlength}\b$/

Weiß einer von euch ob/wie das geht?
CU :-)
Stefan

Variable in Regulärem Ausdruck

Der folgende Beitrag wurde am 11. 08. 2001, 00:56 Uhr von AlexBausW veröffentlicht.

Hallo Stefan,

> Wie kann ich nun im Regulären Ausdruck auf diese Variablen zurückgreifen?

> Zur verdeutlichung was ich bräuchte, was aber nicht klappt:
> /^\b[\w\-.]{$nickname_minlength,$nickname_maxlength}\b$/

Hmmm, folgendes geht:
%>perl -we "$min = 1; $max = 3; $_ = 'abbcccddddeeeee'; print $1 while /((\w)\2{$min,$max})/g;"
und ergibt:
%> bbcccddddeeee

Vermutlich liegt der Fehler eher im \b das vielleicht nicht dort trifft, wo Du es erwartest, wenn Du eine Klasse angibst, in der auch nichtalphanumerische Zeichen vorkommen. \b trifft nämlich nur zwischen \w und \W aber nicht zwischen . und \W und auch nicht zwischen - und \W. Also kann Dein Ausdruck nicht treffen, falls der String mit \W beginnt oder aufhört. Da Du am Anfang und Ende verankerst, kannst Du Dir \b vielleicht sogar ganz sparen. Poste doch mal den Text, auf den Du den regulären Ausdruck loslässt ohne zu treffen, und den String den Du erwartest zu finden.

Gruß Alex

Variable in Regulärem Ausdruck

Der folgende Beitrag wurde am 11. 08. 2001, 01:09 Uhr von Stefan Kleeschulte veröffentlicht.

> Hallo Stefan,

> > Wie kann ich nun im Regulären Ausdruck auf diese Variablen zurückgreifen?

> > Zur verdeutlichung was ich bräuchte, was aber nicht klappt:
> > /^\b[\w\-.]{$nickname_minlength,$nickname_maxlength}\b$/

> Hmmm, folgendes geht:
> %>perl -we "$min = 1; $max = 3; $_ = 'abbcccddddeeeee'; print $1 while /((\w)\2{$min,$max})/g;"
> und ergibt:
> %> bbcccddddeeee

> Vermutlich liegt der Fehler eher im \b das vielleicht nicht dort trifft, wo Du es erwartest, wenn Du eine Klasse angibst, in der auch nichtalphanumerische Zeichen vorkommen. \b trifft nämlich nur zwischen \w und \W aber nicht zwischen . und \W und auch nicht zwischen - und \W. Also kann Dein Ausdruck nicht treffen, falls der String mit \W beginnt oder aufhört. Da Du am Anfang und Ende verankerst, kannst Du Dir \b vielleicht sogar ganz sparen. Poste doch mal den Text, auf den Du den regulären Ausdruck loslässt ohne zu treffen, und den String den Du erwartest zu finden.

Wenn ich die beiden Variablen durch Zahlen ersetze klappt es. (Z. B. mit "abcabc", "abc_abc" oder "abc.-ABC").

Ich fürchte eher es liegt an PHP, mit Perl klappts. (Hab's gerade ausporbiert...)

Hast du noch 'ne Idee?
CU :-)
Stefan

Variable in Regulärem Ausdruck

Der folgende Beitrag wurde am 11. 08. 2001, 01:15 Uhr von Stefan Kleeschulte veröffentlicht.

Habe die Lösung, hätte ja auch selber drauf kommen können...

preg_match ("/^\b[\w\-.]{".$nickname_minlength.",".$nickname_maxlength."}\b$/", $nickname)

Trotzdem Danke!

CU :-)
Stefan

Variable in Regulärem Ausdruck

Der folgende Beitrag wurde am 11. 08. 2001, 01:40 Uhr von Stefan Kleeschulte veröffentlicht.

> Habe die Lösung, hätte ja auch selber drauf kommen können...

> preg_match ("/^\b[\w\-.]{".$nickname_minlength.",".$nickname_maxlength."}\b$/", $nickname)

> Trotzdem Danke!

Grummel, ich glaub ich bin zu müde, diese "Lösung" funktioniert nicht, ich hab' beim ausprobieren was falsch gemacht...

Ich geh schlafen und frag morgen nochmal nach...

CU <gähn> (-:
Stefan

Variable in Regulärem Ausdruck

Der folgende Beitrag wurde am 11. 08. 2001, 17:49 Uhr von Christian Kruse veröffentlicht.

Joho,

> > preg_match ("/^\b[\w\-.]{".$nickname_minlength.",".$nickname_maxlength."}\b$/", $nickname)

> Grummel, ich glaub ich bin zu müde, diese "Lösung" funktioniert nicht, ich hab' beim
> ausprobieren was falsch gemacht...

Wozu hast du die \b da stehen? Das heisst, dass die Strings jeweils mit einem \W enden
muessen, also z. B. - oder .

Lass die \b weg, und dein RegEx sollte korrekt matchen.

Gruss,
 CK

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4