Hello out there!
Der Ausdruck soll prüfen, ob eine eingegeben Zeichenkette syntaktisch der einer Telefonnummer entspricht, ob nun mit, oder ohne Landeskennzahl, mit oder ohne Klammern oder Trennzeichen. Wenn solche Zeichen gesetzt werden, sollen sie aber schon an der richtigen Stelle vorkommen.
Also zuerst möglicherweise ein '+' gefolgt von mindestens einer Ziffer:
(+[0-9]+)?
Es kann ein geklammerter Block auftreten; wenn '(' vorkommt, muss auch ')' vorkommen. Vor und nach den Klammern darf auch ' ' bzw. '-' stehen. In den Klammern mindestens eine Ziffer; ' ', keine '-' als Trennzeichen, diese nur zwischen Ziffern:
([ -]?([0-9]+( [0-9]+)*)[ -]?)?
Dann können Ziffern, Buchstaben¹ und als Trennzeichen² ' ', '-', '/' auftreten:
[0-9A-Za-z]+([ -/][0-9A-Za-z]+)*
Von Anfang ('^') bis Ende ('$') also:
^(+[0-9]+)?([ -]?([0-9]+( [0-9]+)*)[ -]?)?[0-9A-Za-z]+([ -/][0-9A-Za-z]+)*$
Irgendiwe erscheint mir eine Prüfung einer Telefonnummer fraglich.
Warum?
Weil man diese beliebig genau betreiben kann und doch nicht alles erfasst.
See ya up the road,
Gunnar
¹ Vanity-Nummern werden üblicherweise in Großbuchstaben notiert; wegen besserer Nutzbarkeit würde ich auch Kleinbuchstaben zulassen. Oder evtl. noch besser vor der Prüfung den String in Großbuchstaben umwandeln.
² In der Variante ist nur ein Trennzeichen hintereinander zugelassen. Sollen auch " / ", " - " gültig sein, wäre das dort anzupassen.
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)