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:
- Hallo @ -> Ausgabe "@"
- Hallo @ Welt -> Ausgabe "@"
- Hallo @ Welt @ -> Ausgabe "@ Welt @"
- Hallo @ Welt @ Welt -> Ausgabe "@ Welt @"
- @ Hallo -> Ausgabe "@"
- @ Hallo @ -> Ausgabe "@ Hallo @"
etc.
Meine Idee war:
/([FZ]+.*[FZ]*.*)/
1, 3 & 6 funktionieren so wie geplant. Bei den anderen passiert folgendes:
- Ausgabe "@ Welt" statt "@"
- Ausgabe "@ Welt @ Welt" statt "@ Welt @"
- 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