Archiv verlassen und diese Seite im Standarddesign anzeigen : Telefonnummer prüfen
Hi,
ich brauch einen Regex, um eine Telefonnummer zu prüfen. Dabei sollen zusammengeschriebene Nummern gültig sein (z.B. 0892345678), sowie mit einem Leerzeichen oder auch mit Binde- und Schrägstrichen (z.B. 089 / 2345678)
Dafür hab ich folgendes verwendet:
"/^\d+[ /\-]*\d*$/"
Aber wenn ich z.B. "666" eingebe, wird das schon nicht akzeptiert... Warum nicht?
Liebe Grüße,
Basti
eViL_oNe
09.07.2007, 22:23
das trifft leider nicht ganz den Kern der Lösung. Was ist mit einer Angabe wie
0171 / 12 34 5-0
?
im Prinzip müsste man zwischen allen Ziffern ein beliebiges Trennzeichen (Slash, Leerzeichen oder -) erlauben, also so was wie:
^(\d[ /-]?)+\d$
um noch globaler zu sein, müsste man auch eine Ländervorwahl optional erlauben!
also so was wie
^(\+\(\d+\))?(\d[ /-]?)+\d$
@evil: na ja das stand oben nicht, ich antworte nur auf input den ich sehe, das ist wie mit nem email oder url regex, je nach dem wie komplex der fragende den braucht wird der designed, sonst nicht.
BBL, heftiges gewitter!
^(\d[ /-]?)+\d$
So hats bei mir net funktioniert. Ich hab das ? durch * ersetzt, denn es können ja auch mehrere Sonderzeichen hintereinander kommen (089 - 123456)
So hats funktioniert :)
Danke
:P meins geht auch
Ja, aber nur, wenn er nur in der Mitte das " - " macht. Wenn er Ziffernblöcke auch noch mit Leerzeichen trennt und evtl. eine Durchwahl durch den Bindestrich angibt, geht deins auch nicht mehr ;)
eViL_oNe
11.07.2007, 23:43
So hats bei mir net funktioniert. Ich hab das ? durch * ersetzt, denn es können ja auch mehrere Sonderzeichen hintereinander kommen (089 - 123456)
So hats funktioniert :)
Danke
stimmt, das habe ich nicht bedacht -- wobei die Variante dadurch natürlich weniger restriktiv wird, denn so erlaubt man auch so was wie 0-/-1 als Telefonnummer. Btw, es gibt genug Software, die als Kommunikationsnummer jedes Zeichen zulässt. Gibt es einen Grund für diesen restriktiven Ansatz?
PS: meine Lösung in Java für Telefonnummern war übrigens folgende:
(\+|0)?\d([/ -]?\d)+
jede Telefonnummer wird also mit einer 0 als Vorwahl oder + für Ländervowahl, mindestens einer Ziffer gefolgt von beliebig vielen Ziffern und Trennzeichen, jedoch maximal ein Trennzeichen zwischen jeweils zwei Ziffern.
auch wenn die Lösung nicht optimal ist, so erlaubt sie dennoch jegliche landesüblichen Telefonnummereingaben. Fehlerhafte Eingaben sollte man natürlich mit einem passenden Text abfangen, bei mir sah das in etwa so aus:
Die eingegebene Rufnummer ist ungültig. Eine Rufnummer besteht aus Ziffern.
Zwischen zwei Ziffern darf ein einziger Schrägstrich, Bindestrich oder Leerzeichen stehen.
Die Rufnummer wird optional mit einer "0" (für Vorwahl) oder mit "+" (Ländervorwahl) eingeleitet.
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.