preg_match Adressensuchmuster

supatiischa

Mitglied
Moin!
Hab nu schon wirklich lange rumprobiert. Aber es will und will nicht klappen. Keine Ahnung warum, vllt sehe ich den Wald vor lauter Bäumen wieder nicht...

Zu meinem Problem:
Eigentlich ne einfache Sache, ich will mit preg_match herausfinden ob es sich um eine Adresse/Anschrift handelt. Zutreffen sollen folgende Muster:



  • 'blabla weg 123'
  • 'straße 5'
  • 'komischestraße 15c'
Als Muster hab ich folgendes 'entwickelt':

Code:
        "/^
     ([a-zA-Z]{4,20}[ ])        #Strassenname
          (([a-zA-Z]{4,20}[ ])|[])   #Strassenname #2 falls vorhanden ( 'weg', 'str.', usw.  )
            ([1-9]{1}|[0-9]{2,4})      #Hausnummer
            ([a-zA-Z]{0,1})            #Buchstabe
            $/";
ich weiß, is durch das rumprobieren n bsichen aus den fugen geraten...
Nun findet er zwar 'straße 5' und 'komischestraße 15c' voll okay, aber sowas wie 'blabla weg 123' mag er nicht.

Nun meine Frage:
Wodran liegt das und wie lautet das Muster das alles kann? ;)
Danke an alle die antworten und sich meinem Problem widmen,
mfg tiischa

p.s.: das man hausnummern wie 012 benutzen kann is mir bewusst und is momentan auch nich von belang ( @ schlaumeiers :P )

schon wieder im Topic vertippt... heißt natürlich preg_match ...
 
Zuletzt bearbeitet:
Nur mal so ungetestet: (Weg hat übrigens nur 3 Buchstaben;) )
Code:
@^[^\W_]{4,20}(|\s+[^\W_]{3,20})\s+[^\D0]\d*[a-z]?$@i


en Detail
Code:
[^\W_]{4,20}          //4-20 Buchstaben==Strassenname1
(|\s+[^\W_]{3,20})\s+ //nichts oderLeerzeichen gefolgt von 3-20 Buchstaben==Strassenname2  
[^\D0]\d*[a-z]        //Eine Zahl, die Keine 0 ist, gefolgt von beliebig vielen Zahlen und einem optionalen Buchstaben==Hausnummer
 
Zurück