baeckerman83: REGEX Nummern

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?

  1. 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.

    --
    Hey Girl,
    i wish you were asynchronous, so you'd give me a callback.
  2. 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

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    ### Henry L. Mencken ###
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ## Viktor Frankl ###
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  3. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. @@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'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. @@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'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  4. @@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'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. @@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.

      1. @@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'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)