Bernd: Regulärer Ausdruck für QUERY_STRING

Hallo,

ich habe ohne Ende herumprobiert, bin aber letztlich nicht
zu einem zufriedenstellenden Ergebnis gekommen.

Ich brauche einen RegExp, der auf Strings paßt, die sich wie
folgt zusammensetzen:

  • Zeichen a-z, A-Z, 0-9
  • Sonderzeichen +
  • Hexadezimal codierte Sonderzeichen, eingeleitet durch
    ein Prozentzeichen, z.B. %9a, oder %2F

Beispiele: AbtgZj, k675, jah+J98, gh%6Faj, 87%d5po, %3ftest%60ni

Ansatz:

[a-zA-Z0-9+]   und   %([\dA-Fa-f][\dA-Fa-f])

Beide für sich genommen funktionieren natürlich, aber wie
mache ich syntaktisch richtig  e i n e n  Ausdruck daraus ?
Ich denke, der zweite Ausdruck muß in den ersten eingefügt
werden, aber wie ?

Vielen Dank für einen Tip im  voraus
Bernd

  1. Hallo,

    ich habe die RegExp unter "Ansatz" noch einmal vervollständigt,
    so, wie ich sie wirklich benutze, wird dann vielleicht
    verständlicher. Jetzt müssen sie nur noch zusammen...

    1.) if ($str=~/[1]*$/) ...
    (Prüft, ob Strings nur aus Buchstaben, Zahlen und + bestehen)

    2.) if ($str=~/^(%([\da-fA-F][\da-fA-F]))*$/) ...
    (Prüft, ob Strings nur aus Hexcodes bestehen)

    Ich will nun, das mit e i n e m Ausdruck geprüft wird, ob sich ein
    String ausschließlich aus b e i d e m zusammensetzt.

    Vielen Dank für einen Tip !
    Bernd


    1. a-zA-Z0-9+ ↩︎

    1. Habe ihn gefunden:

      if($str=~/^(%([\da-fA-F][\da-fA-F])|[a-zA-Z0-9+])*$/) ...

      puh...

  2. Hallo Bernd,

    • Zeichen a-z, A-Z, 0-9
    • Sonderzeichen +
    • Hexadezimal codierte Sonderzeichen, eingeleitet durch
      ein Prozentzeichen, z.B. %9a, oder %2F

    /^(?:[a-zA-Z0-9+]|%[0-9a-fA-F]{2})+$/

    Der sollte passen. Wenn du aber wirklich einen Query-String
    matchen willst, fehlen noch diverse Zeichen (siehe auch
    entsprechende RFC).

    Gruesse,
     CK