REGEX Nummern
baeckerman83
- javascript
Hiho!
Ich habe eine private Seite, auf dieser gebe ich mir von Asterisk Rufnummern aus. Diese sind also immer im gleichen Format. Mit RegEx text.match() versuche ich diese jetzt mit Regex rauszufinden.
Ich habe die Nummern in folgendem Format:
+4951234567899 oder
051234567789
andere Formate kommen nicht vor.
Ich dachte jetzt ich muss machen
(?(+[1-9]{2,3}|0)[1-9][0-9]{1,15})
Doch der Tester im Internet meckert schon wegen dem ? und dem + geht das in Javascript nicht? Wie kann ich aus dem Text genau diese Art von Zahlen ermitteln?
Meine Herren!
Doch der Tester im Internet meckert schon wegen dem ? und dem + geht das in Javascript nicht? Wie kann ich aus dem Text genau diese Art von Zahlen ermitteln?
Zeichen, die bei regulären Ausdrücken eine Bedeutung haben, müssen entsprechend maskiert werden.
Was das führende Fragezeichen soll, verstehe ich nicht.
Versuche mal deine regulären Ausdruck mit Worten zu beschreiben. Zwei Beispiele sind relativ Mau, um auf einen regulären Ausdruck zu schließen. Da sollten mindestens noch ein paar Beispiele sein, die von dem Ausdruck nicht erkannt werden soll. Besser noch, wie schon gesagt, in Worte fassen, was du möchtest.
Für Telefon-Nummern gibt es übrigens auch ein Eingabefeld:
<input type="tel">
Das hat aber keine eingebaute Syntax-Validierung.
Moin
(?(+[1-9]{2,3}|0)[1-9][0-9]{1,15})
läuft bisschen anders bzw. hast du vergessen zu escapen (das +-Zeichen)
((\+[1-9]{2,3}|0)[1-9][0-9]{1,15})
Wozu das Fragezeichen? das kann m.E. nicht zu hunrig werden.
Gruß Bobby
Hi,
Ich habe eine private Seite, auf dieser gebe ich mir von Asterisk Rufnummern aus.
(?(+[1-9]{2,3}|0)[1-9][0-9]{1,15})
soll das [1-9]{2,3} die internationale Vorwahl sein?
Falls ja: da sind mind. 3 Fehler drin.
1. Internationale Vorwahlen können auch 1-stellig sein (USA, Kanada: +1)
2. Internationale Vorwahlen können auch 4-stellig (und sogar 5-stellig, für die Antarktis) sein, Beispiel: Antigua und Barbuda +1809
3. internationale Vorwahlen können ab der 2. Stelle auch Nullen enthalten. Siehe Beispiel zu 2.
Doch der Tester im Internet meckert schon wegen dem ? und dem + geht das in Javascript nicht?
Das haben die anderen ja schon erklärt.
cu,
Andreas
@@MudGuard:
nuqneH
soll das [1-9]{2,3} die internationale Vorwahl sein?
Und warum soll diese extra in Klammern stehen?
Aus einem String der Form +[1-9][0-9]+ kann man die internationale Vorwahl nicht mit einem einfachen regulärem Ausdruck extrahieren; da gehört das Wissen dazu, wie lang diese jeweils ist, d.h. nach welcher Ziffer sie aufhört.
Qapla'
Hi,
soll das [1-9]{2,3} die internationale Vorwahl sein?
Und warum soll diese extra in Klammern stehen?
So wie ich das verstanden habe, bekommt er die Nummern von einer Software namens Asterisk. Und wenn die die Klammern mitliefert, muß der Ausdruck natürlich darauf vorbereitet sein.
Es geht ja nicht um die Validierung von Telephonnummern, die User eingegeben haben.
(insofern verstehe ich auch 1UnitedPowers Vorschlag mit <input type="tel"> nicht wirklich.
cu,
Andreas
@@MudGuard:
nuqneH
So wie ich das verstanden habe, bekommt er die Nummern von einer Software namens Asterisk. Und wenn die die Klammern mitliefert, muß der Ausdruck natürlich darauf vorbereitet sein.
So wie ich das verstanden habe, gibt’s keine Klammern, sondern nur + und Ziffern.
Ansonsten müssten die Klammern im regulären Ausdruck natürlich auch escapet werden.
Qapla'
@@baeckerman83:
nuqneH
Ich dachte jetzt ich muss machen
(?(+[1-9]{2,3}|0)[1-9][0-9]{1,15})
Ich glaube, du machst zu viel.
Wozu bspw. die Längenbeschränkung? Was, wenn eine Telefonnummer länger ist? Was bei „Dienstanschlüssen“ (Rufnummer + interne Nummer) durchaus der Fall sein kann.
Bist du sicher, dass in manchen Ländern nicht zwei Nullen am Anfang vorkommen können?
[+0][1-9][0-9]+ sollte das tun, was du willst. Ein + oder eine 0 gefolgt von einer Ziffer ungleich 0 gefolgt von beliebig vielen Ziffern.
Oder mit Mindestlänge sowas wie [+0][1-9][0-9]{5,}
Qapla'
@@baeckerman83:
Oder mit Mindestlänge sowas wie [+0][1-9][0-9]{5,}
Oh da habe ich ja viel zu kompliziert gedacht. Genau das ist das was ich brauche. Die Daten kommen aus einer Telefonanlage und diese spuckt immer ein Format aus, nämlich dieses mit dem + davor für eingehende Calls und mit der 0 ist der Anschluss auf welchen der Anruf eingegangen ist, also bei ISDN auf welcher Nummer. Daher muss ich mir keine Gedanken über andere Formate machen.
@@baeckerman83:
nuqneH
Oder mit Mindestlänge sowas wie [+0][1-9][0-9]{5,}
Oh da habe ich ja viel zu kompliziert gedacht. Genau das ist das was ich brauche.
Vielleicht muss der Ausdruck auch gar nicht abfangen, dass nach + keine 0 kommen darf. Dann wird’s noch einfacher:
+?[0-9]{7,} oder gar +?[0-9]+
Qapla'