Regulärer Ausdruck für Telefonnummer - korrekt?
zettelbox
- php
0 ActiviT0 Vinzenz Mai0
Der Martin
Hallo zusammen,
ich finde mich zur Zeit in die regulären Ausdrücke hinein. Dabei wollte ich mal einen für eine Telefonnummer schreiben. Die soll folgende Eigenschaften haben:
Sie soll mit mindestens 3 Ziffern beginnen. Anschließend kann ein Bindestrich, Slash oder Leerzeichen kommen, danach dürfen wieder Zeichen (aber wenn, dann mindestens drei) kommen. Das dann noch einmal, danach muss der String dann enden. Also:
OK wären also:
012-349
043-587-986
042
085 98562 4523642158
Dafür habe ich den folgenden Ausdruck geschrieben:
if (!preg_match("/[1]{3,}[-/[:SPACE:]]*[0-9]{3,}[-/[:SPACE:]]*[0-9]{3,}$/", $field))
//Fehler
Ist der Ausdruck korrekt?
Vielen Dank schommal!
0-9 ↩︎
Dafür habe ich den folgenden Ausdruck geschrieben:
if (!preg_match("/[1]{3,}[-/[:SPACE:]]*[0-9]{3,}[-/[:SPACE:]]*[0-9]{3,}$/", $field))
//FehlerIst der Ausdruck korrekt?
Naja, wozu ist denn das Sternchen "*" da? Das würde nämlich auch 5 Leerzeichen zulassen. Nimm stattdessen ein Fragezeichen "?". Das Fragezeichen bedeutet: "entweder eins oder gar keins".
0-9 ↩︎
Naja, wozu ist denn das Sternchen "*" da? Das würde nämlich auch 5 Leerzeichen zulassen. Nimm stattdessen ein Fragezeichen "?". Das Fragezeichen bedeutet: "entweder eins oder gar keins".
Hey!
Vielen Dank, war schonmal nen guter Tipp. Hab den Ausdruck nochmal geändert (unter anderem gabs Probleme mit dem :SPACE: und dem Modifer).
![1]{3,}(-|/| )?{[0-9]{3,}(-|/| )?[0-9]*$!i
Was ist davon nun zu halten?
0-9 ↩︎
Naja, wozu ist denn das Sternchen "*" da? Das würde nämlich auch 5 Leerzeichen zulassen. Nimm stattdessen ein Fragezeichen "?". Das Fragezeichen bedeutet: "entweder eins oder gar keins".
Hey!
Vielen Dank, war schonmal nen guter Tipp. Hab den Ausdruck nochmal geändert (unter anderem gabs Probleme mit dem :SPACE: und dem Modifer).![1]{3,}(-|/| )?{[0-9]{3,}(-|/| )?[0-9]*$!i
Was ist davon nun zu halten?
Kann man noch besser schreiben:
![2]{3,}[/ -]?{[0-9]{3,}[/ -]?[0-9]*$!i
So, oder vielleicht aus so (keine Garantie):
!([0-9]{3,}[/ -]){1,2}[0-9]*$!i
Kann man noch besser schreiben:
![1]{3,}[/ -]?{[0-9]{3,}[/ -]?[0-9]*$!i
So, oder vielleicht aus so (keine Garantie):
!([0-9]{3,}[/ -]){1,2}[0-9]*$!i
Die zweite Variante hab ich jetzt gar nicht ausprobiert, aber die erste find ich gut. Ist noch nen kleiner Fehler drin (hat sich bei mir schon reingeschlichen, eine geschweifte Klammer ist zuviel), ansonsten scheints einwandfrei zu funktionieren.
Danke allen die geholfen haben!
0-9 ↩︎
Hallo
ich finde mich zur Zeit in die regulären Ausdrücke hinein. Dabei wollte ich mal einen für eine Telefonnummer schreiben.
Sie soll mit mindestens 3 Ziffern beginnen.
Warum? + oder 00 wären auch ein netter Beginn, eine öffnende runde Klammer auch.
Anschließend kann ein Bindestrich, Slash oder Leerzeichen kommen,
Warum? Selbst ohne internationale Vorwahl schreibe ich persönlich gerne
0681 oder 0 68 98 (mit hübschen schmalen, nicht umbrechenden Leerzeichen[1])
danach dürfen wieder Zeichen (aber wenn, dann mindestens drei) kommen.
Warum?
Das dann noch einmal, danach muss der String dann enden. Also:
OK wären also:
012-349
043-587-986
042
085 98562 4523642158
Ist der Ausdruck korrekt?
Für real existierende Telefonnummern? Nein.
Für Telefonnummern, wie sie Benutzer gerne notieren? Nein.
Ach ja, falls jemand mit irgendeiner Norm kommt. Die ignoriere ich gern und auch ganz bewußt, weil sie unsinnig und unbrauchbar ist, siehe dieses Archivposting
Freundliche Grüße
Vinzenz
[1] Die Idee ist von Gunnar Bittersmann
Naja, man kann ja mal eins nach dem anderen machen. Erstmal möchte ich das ja nur für Übungszwecke haben...
Trotzdem Danke.
Grüße zurück,
zettelbox
Hallo,
Sie soll mit mindestens 3 Ziffern beginnen.
warum das? Internationale Vorwahlen werden gern mit vorangestelltem Pluszeichen notiert.
Anschließend kann ein Bindestrich, Slash oder Leerzeichen kommen, danach dürfen wieder Zeichen (aber wenn, dann mindestens drei) kommen.
Warum mindestens drei? Möchtest du das Münchener Ortsnetz (+49-89-xxxxxxx) ausschließen? Frankfurt, Hamburg, Berlin und vermutlich ein paar andere deutsche Städte haben auch nur zweistellige Vorwahlen. Wie das in anderen Ländern gehandhabt wird, mag ich gar nicht beurteilen.
Das dann noch einmal, danach muss der String dann enden.
Kleine Gemeinden haben teilweise noch zweistellige Anschlussnummern (z.B. Sulbach an der Murr: +49-7193-51-0 ist die Hauptnummer des Rathauses).
Und die Durchwahl in firmeninternen Netzen möchtest du auch nicht zulassen?
Ist der Ausdruck korrekt?
Den solltest du nochmal gründlich überdenken - nämlich die Stelle, wo du die erlaubten oder nicht erlaubten Muster festlegst.
So long,
Martin