Seite 1 von 2

[PHP] RegEx für neue Profilfelder

Verfasst: 14.03.2008 15:03
von Mean
Hallo,

ich habe gestern und heute das Forum (Version 2) etwas hinsichtlich der Profileingabefelder angepasst.

Nur würde ich die Felder gerne validieren lassen, habe von RegEx aber Null Ahnung und nach Durchlesen eines Tutorials bekomme ich das irgendwie immer noch nicht hin, da einige Schlupflöcher da sind...

Kann mir vielleicht jemand helfen, und zwar würde ich gerne folgende Felder per RegEx validieren lassen:

PLZ: 5 Zahlen von 0 - 9 erlaubt
Ort: Buchstaben und - erlaubt (keine Leerzeichen)
Telefonnr: erst 3 bis 5 Zahlen, dann / und dann mind. 4 Zahlen
Handynr: erst 4 Zahlen, dann / und dann mind. 6 Zahlen
Straße: Erstes Zeichen = Großbuchstabe, dann Buchstaben, am Ende soll dann str. oder -Str. stehen, erlaubte Sonderzeichen: -
Hausnr: mind. eine bis max. drei Zahlen, ggf. noch 1 Buchstabe dahinter (gibt ja z.B. auch 124a als Hausnr)


Kann mir da bitte jemand helfen? Wäre echt super!

Vielen Dank und Grüße,

Felix

Verfasst: 14.03.2008 16:27
von S2B
Auf die Schnelle (ungetestet):
  • PLZ: [0-9]{5}
  • Ort: [-A-ZÄÖÜa-zäöüß]+
  • Telefonnummer: [0-9]{3,5}/[0-9]{4,}
  • Straße: [A-ZAÄÜ][a-zäöüß-](?:str\.|-Str\.)
  • Hausnummer: [0-9]{1,3}[a-z]?
Handy darfst du selber machen, damit du auch etwas dabei lernst. :wink:

Bei der Straße würde ich an deiner Stelle ein bisschen "gnädiger" mit den erlaubten Zeichen sein. Zum Beispiel gibt es ja auch Straßennamen, die aus mehreren Worten bestehen (Unterer Höhenweg, An der Lehmgrube etc.). Bei der Telefonnummer würde ich minimal 3 anstatt 4 Zahlen nehmen, solche Nummern gibt es nämlich auch.

Verfasst: 14.03.2008 17:41
von Boecki91
Einen Telefon Nummer fängt immer mit 0 an (Vorwahl)

Des weiteren sollte man die Nationale Vorwahl +49 oder 0049 berücksichtigen

Verfasst: 14.03.2008 17:52
von S2B

Code: Alles auswählen

(?:(?:+|00)[0-9]{2}|0)[0-9]{2,5}/[0-9]{3,}
und wieder ungetestet...

Verfasst: 14.03.2008 18:36
von Mean
Vielen Dank euch beiden!

Grüße,

Felix

Verfasst: 14.03.2008 19:30
von Sanchez17
Hi,

auch wenn das nicht im Sinne des Thread Erstellers war, würde ich gern mal eine Frage einbinden...

Mit RegEx komm ich selber leider noch nicht klar. Daher würde ich mich freuen, wenn jmd kurz erklären könnte, wieso wann welches Zeichen benutzt wurde:
[A-ZAÄÜ][a-zäöüß-](?:str\.|-Str\.)
[A-ZAÄÜ][a-zäöüß-] <-- das Kann ich mir noch Erklären.
(?:str\.|-Str\.) <-- da versteh ich beispielweise kein Wort.

Wäre jemand so freundlich? :-)

Gruß
Michel

Verfasst: 14.03.2008 19:58
von gn#36
?: - Optional
| - Entweder Oder
() - Gruppenbildung
\ - Escape Zeichen (-> Das nächste Zeichen als Zeichen und nicht als Befehl interpretieren, in dem Fall den Punkt der eigentlich für jedes Zeichen stehen könnte als echten Punkt interpretieren.)
Also Optional kann an der Stelle noch str. oder -Str. stehen. Ich würde da übrigens auch Leerzeichen erlauben, es soll ja auch so Adressen wie "Alte Kölner Straße" geben...

Statt ?: kann man auch ? hinter die Klammer setzen, das ergibt in dem Fall das gleiche.

Verfasst: 14.03.2008 23:03
von Sanchez17
ahh, vielen Dank gn#36. :wink:

Ansich doch einfacher, als es am Anfang aussieht.

Verfasst: 14.03.2008 23:14
von gn#36
Ich kenne das Problem. Als ich die Dinger das erste Mal gesehen habe waren das auch Böhmische Dörfer....

Verfasst: 15.03.2008 00:11
von S2B
gn#36 hat geschrieben:?: - Optional
[...]
Statt ?: kann man auch ? hinter die Klammer setzen, das ergibt in dem Fall das gleiche.
Kleine Korrektur: ein ?: am Anfang der Klammer bewirkt, dass der Inhalt der Klammer nicht extra festgehalten wird, wohingegen ein einfaches ? nach einer Klammer den Inhalt der Klammer optional macht.

Btw: Am Anfang wird sich wohl jeder mit Regulären Ausdrücken schwer tun, ist ja auch kein Wunder bei den kryptischen Zeichenfolgen, die da immer zustande kommen. Auch werden 99% aller Programmierer (zu denen gehöre ich *g*) nur bis zum Grundwissen von Regulären Ausdrücken vordringen, da man das meiste einfach zu selten oder gar nicht benötigt.