Carsten1986: Telefonnummer überprüfen

Hallo allerseits,

also ich hab schon gut gegoogelt und hier gesucht, aber komme trotzdem nicht weiter... Ich will eine Telefonnummer nach dem normalen Schema (+49 5364 72-0) überprüfen, also es sind (nur) Ziffern, Leerzeichen, Pluszeichen und Bindestriche erlaubt.

Hab folgenden Quellcode, aber die Anweisungen werden nicht verarbeitet!?

if (document.telefon.value.match([0-9\s +-]) {  
alert('Fehler!');  
document.telefon.focus();  
return false; }

Wer kann mir helfen?

Gruss Carsten

  1. [latex]Mae  govannen![/latex]

    Hab folgenden Quellcode, aber die Anweisungen werden nicht verarbeitet!?

    Die Fehlerkonsole

    if (document.telefon.value.match([0-9\s +-]) {

    Diese Zeile enthält zwei Fehler und eine unsinnige/überflüssige Angabe.

    1. Öffnend !== Schließend
    2. Aufbau einer beliebigen RegExp; da fehlt etwas Generelles
    3. Verwendung von \s  und ' ' in der RegExp

    Du solltest zur Erkennung von Fehlern die Fehlerkonsole deines Browsers finden und nutzen oder ein weiterführendes Debug-Werkzeug benutzen.

    Cü,

    Kai

    --
    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken in Richtung "Mess up the Web". (suit)
    Foren-Stylesheet Site Selfzeug JS-Lookup
    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
    1. Habs jetzt versucht mit
      document.telefon.value.match(/\d+|\s|\b+\b|\b-\b/)
      Geht immer noch nich!!
      Wo ist der Fehler!?

      1. Habs jetzt versucht mit
        document.telefon.value.match(/\d+|\s|\b+\b|\b-\b/)
        Geht immer noch nich!!
        Wo ist der Fehler!?

        Also du schaust jetzt ob der Inhalt von telefon eine oder mehr Ziffern ist oder ein einzelnes Leerzeichen (bzw. Whitespace) ist oder zwei oder mehr Wort-Ende-Zeichen ist oder ein Wort-Ende-Zeichen ein Minus und ein Wortendezeichen.
        Dein Ausdruck trifft also zu auf
        1234

        ...,
        .-.
        er trifft aber z.B. nicht zu auf
        1234 ...,.-.

        Wir hatten das vor Kurzem schoneinmal mit E-Mail-Adressen. Auch für dich gilt: Warum nicht
        <input type="tel" name="telefon" id="telefon" />
        ?
        Diese Prüfung erfolgt ebenso wie bei JS im Browser und die Funktion ist schon fertig.

        Ein für dich vielleicht geeigneter Ausdruck wäre in Richtung
        (+\d\d)?[0-9 -]*
        Dieser erlaubt ein PlusZifferZiffer und danach eine beliebige Kombination von Ziffern, Leerzeichen und Minus. Dieser Ausdruck trifft auch auf ein Leeres Feld zu.

        --
        sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
        1. @@Deus Figendi:

          nuqneH

          Ein für dich vielleicht geeigneter Ausdruck wäre in Richtung
          (+\d\d)?[0-9 -]*
          Dieser erlaubt ein PlusZifferZiffer und danach eine beliebige Kombination von Ziffern, Leerzeichen und Minus. Dieser Ausdruck trifft auch auf ein Leeres Feld zu.

          Der Ausdruck prüft, ob besagtes Muster vorkommt; aber nicht, ob ausschließlich besagtes Muster vorkommt. '^' an den Anfang, '$' ans Ende.

          Auch sollten Trennzeichen nicht beliebig oft hintereinander und an beliebiger Stelle auftreten dürfen.

          Der Ausdruck sieht dann eher so aus: ^+?\d+([ -]\d+)*$

          Nur U+0020 space als Leerzeichen zuzulassen ist wohl auch nicht sinnvoll; U+00A0 no-break space, U+2009 thin space und U+202F narrow no-break space sind sinnvolle Trennzeichen. [http://forum.de.selfhtml.org/archiv/2007/2/t146255/#m948897]

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
  2. Hallo Carsten,

    Ich weiss natuerlich nicht, in welchem Zusammenhang du Deine Nummer testest.

    Zumindest im Zusammenhang mit Shopsystemen und aehnlichen halte ich das aber fuer bedenklich. Die gleichen Bedenken habe ich auch bei Postleitzahlen. Solche Dinge funktionieren immer nur regional begrenzt, in den USA hat sich beispielsweise eine feste Syntax durchgesetzt. In Europa scheitert ein solches Unterfangen aber spaetestens an auslaendischen Formaten, meine Telefonnummer zB. ist
     +352 6xxxxxx8, meine Postleitzahl L-2xxx. In Luxemburg gibt es auch nicht die 0 bei der Ortsvorwahl, das L- hingegen ist ein fester Beststandteil der PLZ.

    Fuer eine Telefonnummer faende ich es insofern besser, nur auf +?[\d ()]+ zu testen, bei Postleitzahlen nur auf deren Vorhandensein. Aehnlich ist das ja bei Emailadressen, wo man mehr und mehr dazu uebergeht, nur auf @ mit einem Punkt irgendwo dahinter zu pruefen.

    Gruss

    Dieter

  3. @@Carsten1986:

    nuqneH

    also es sind (nur) Ziffern, Leerzeichen, Pluszeichen und Bindestriche erlaubt.

    Warum keine Buchstaben? Vanity-Nummern?

    http://forum.de.selfhtml.org/archiv/2007/2/t146255/#m948892 ff., insb. http://forum.de.selfhtml.org/archiv/2007/2/t146255/#m949049

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)