PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Telefonnummer prüfen


smag87
09.07.2007, 11:30
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


smg
09.07.2007, 11:33
/^\d+\s?[\-]?\s?\d+/

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$

smg
10.07.2007, 12:08
@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!

smag87
10.07.2007, 12:21
^(\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

smg
10.07.2007, 12:40
:P meins geht auch

smag87
11.07.2007, 09:19
: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.