Telefonnummer überprüfen
Carsten1986
- javascript
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
[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
Habs jetzt versucht mit
document.telefon.value.match(/\d+|\s|\b+\b|\b-\b/)
Geht immer noch nich!!
Wo ist der Fehler!?
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.
@@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'
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
@@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'