Mario: Regulärer Ausdruck unvollständig.

Beitrag lesen

Hallo Forum.

Folgende Sachlage: Eine Eingabezeile für eine Adresse wird ausgewertet und in zwei Teilstrings zerlegt: Straßenteil und Nummernteil. Das geht recht fix über

/(\D+)\s(\d+\b$)/

Der nun in $1 abgelegte Straßenteil soll nochmals überprüft werden und zwar darauf, ob folgende (ungültige) Zeichen enthalten sind:

/ + * ? ^ $ | \ ( ) [ ] { } @ µ

Dafür hab ich folgendes:

/([/+\*?^$|\()[]{}@µ])/

Den Ausdruck werde ich später der Einfachheit halber als [FZ] (fehlerhafte Zeichen) bezeichnen.

Funktioniert auch soweit. Nur soll es nicht nur bei einer Erkennung bleiben, sondern es soll auch ausgegeben werden, im welchem Bereich der Fehler passiert.

Beispiel:

  1. Hallo @ -> Ausgabe "@"
  2. Hallo @ Welt -> Ausgabe "@"
  3. Hallo @ Welt @ -> Ausgabe "@ Welt @"
  4. Hallo @ Welt @ Welt -> Ausgabe "@ Welt @"
  5. @ Hallo -> Ausgabe "@"
  6. @ Hallo @ -> Ausgabe "@ Hallo @"
    etc.

Meine Idee war:

/([FZ]+.*[FZ]*.*)/

1, 3 & 6 funktionieren so wie geplant. Bei den anderen passiert folgendes:

  1. Ausgabe "@ Welt" statt "@"
  2. Ausgabe "@ Welt @ Welt" statt "@ Welt @"
  3. Ausgabe "@ Hallo" statt "@"

Zerbreche mir schon seit mehreren Stunden den Kopf darüber, finde aber keine Lösung. Hoffe das mir jmd. einen Vorschlag machen kann.

Gruß,
Mario