it-swarm-eu.dev

Welche Sonderzeichen sollte man für eine Telefonnummer zulassen?

Ich entwerfe eine Webseite, die für globale Benutzer verwendet wird, einschließlich Benutzer aus Kanada, den USA, Indien, Großbritannien usw. Ich muss Validierungen für dieses Telefonnummernfeld beantragen, bin mir aber nicht sicher, wie ich dies am besten erreichen soll .

Einige der gültigen Formate, an die ich denken kann, sind:

  1. 1800123456 (Indien)
  2. verwendung von "-" in US-Telefonnummern

Ich bin etwas verwirrt darüber, welche Sonderzeichen ein Benutzer eingeben soll (z. B. .- / ()). Wie haben andere dies in der Vergangenheit gelöst?

21
Ranger

Nur weil Sie können etwas einschränken (dafür werden Sie als Programmierer bezahlt, um Code zu schreiben), heißt das nicht, dass Sie dies tatsächlich tun sollten.

Was bringt es, eine Nummer zu validieren? Warum ist es nützlich? Wird es fehlschlagen, wenn ein Benutzer "0800DIALTHIS" oder "49 は 電話 番号 を 持 っ て い な い" oder "(499) 123-45-67 добавочный 4425" eingibt? Dies wird sicherlich der Fall sein (Sie sagen "global", nicht wahr?), Während Benutzer Ihnen nur wichtige Informationen über die telefonische Kontaktaufnahme vermitteln wollten.

Außerdem sollte die Art und Weise, wie Daten gespeichert werden, von der Art und Weise abhängen, wie sie verwendet werden. Wie werden Sie die Zahlen verwenden? Werden sie zum automatischen Senden von SMS Spam - oder werden sie manuell von Managern gewählt? Wenn dies der Fall ist, ist es in Ordnung, zusätzliche Zeichen zuzulassen, da das menschliche Gehirn dies kann Analysieren Sie sie so, wie sie es für am besten geeignet halten. In diesem Fall benötigen Sie keine Validierungen, was die menschlichen Benutzer nur nervt.

21
P Shved

Es wäre sehr schwierig zu wissen, ob eine Nummer gültig ist oder nicht, da verschiedene Länder unterschiedliche Formate haben. In Frankreich ist beispielsweise 06 12 34 56 78 eine gültige Telefonnummer, 00 12 34 56 78 nicht, da die Nummer nur von 01 bis 09, 06 und 07 als Mobiltelefone beginnen kann.

Außerdem können die Telefonnummern auch im selben Land in verschiedenen Formaten geschrieben werden. Ich habe gesehen:

  • 06 12 34 56 78
  • 0612345678
  • 06.12.34.56.78
  • 06-12-34-56-78
  • +33612345678
  • +33 (0) 6 12 34 56 78

die letzten beiden sind die internationale Form.

Allgemein:

  1. Klammern zulassen, + Symbol nur als Hauptzeichen, Bindestriche, Punkte, Kommas und Leerzeichen.
  2. Denken Sie nach Möglichkeit nur an die normalisierte Form (d. H. +33 (0) 612345678).
  3. Wenn dies nicht möglich ist, entfernen Sie mindestens Trennzeichen (wie Leerzeichen).

Es wird nicht empfohlen, zu tief in die Validierung pro Land einzusteigen. Es gibt nicht nur eine große Anzahl von Regeln, sondern auch Änderungen von Regeln. Zum Beispiel gab es in Frankreich vor einigen Jahren ab 07 oder 09 keine Telefonnummern mehr. Mit zunehmender Anzahl von Mobiltelefonen erschien 07. Mit VoIP-Diensten erschien 09.

Sie können auch spezielle Nummern berücksichtigen. Zum Beispiel ist 3635 eine gültige Zahl in Frankreich, auch wenn sie nur vier Ziffern enthält und mit einer Nicht-Null beginnt.

7

Beschränken Sie die Zeichen nicht. nimm alles, was er dir gibt. Aber wenn Sie es wählen, nehmen Sie nur die Ziffern. Selbst dann könnte es falsch funktionieren. Ich war ein Jahr in Thailand, bevor ich erfuhr, dass 123-4567-9 keine Nebenstelle bedeutet, sondern eine Reihe von Nummern, 1234567 bis 1234569. Als ich "12345679" wählte, funktionierte es, weil die Telefongesellschaft die zusätzliche Ziffer ignorierte. Nehmen Sie alles, wählen Sie nur Ziffern.

Ich finde es toll, dass mein neues Telefon Leerzeichen in der Telefonnummer zulässt. Ich kann einfach so "123 456 7890" eingeben, nicht alle zusammen püriert.

4
Andy Canfield

Google hat lib dafür:

Googles gemeinsame Java-, C++ - und JavaScript-Bibliothek zum Parsen, Formatieren und Überprüfen internationaler Telefonnummern.

https://github.com/googlei18n/libphonenumber

Ich denke, es muss Fälle geben, die nicht behandelt werden, da dies keine leichte Aufgabe ist. Lassen Sie Benutzer Zahlen und Buchstaben eingeben und Buchstaben später mit Code entfernen.

1

Klammern, Bindestrich und Leerzeichen.

Sobald der Benutzer die Telefonnummer eingegeben hat, die diese Symbole enthält, können Sie sie gemäß den länderspezifischen Regeln validieren (die Sie benötigen, um diese Regeln für jedes Land zu erfassen). Anschließend können die nicht Ziffern tatsächlich gelöscht werden, wenn sie angezeigt werden wird intern in Ihrer Software verarbeitet.

Dies liegt daran, dass IDD (International Direct Dialing) es unmöglich macht, zu verlangen, dass beim Wählen einer Nummer tatsächlich "Sonderzeichen" verwendet werden, mit Ausnahme von Pausen beim Eingeben der Ziffern.

(Ich kenne mich damit überhaupt nicht aus; bitte korrigieren Sie mich, wenn ich falsch liege.)

0
rwong

Das einzige, was überprüft werden sollte, ist die Anzahl der Ziffern - stimmt es mit dem überein, was Sie anrufen müssten?

Zugangscodes dürfen/sollten von einem Benutzer nicht eingegeben werden dürfen (d. H. +1 für die USA). Ich sage Ihnen warum - wenn es ein Amerikaner ist, der es betritt, und sie nicht so versiert sind, werden sie wahrscheinlich 001 anstelle von 1 eingeben wollen. Der Grund dafür ist, dass Sie mit 00 aus den USA auf eine internationale Nummer zugreifen. Sie wissen nicht, was der Unterschied zwischen dem und nur +1 ist. Wenn Sie Festnetzanschlüsse zwischen Vorwahlen (und manchmal in derselben Vorwahl) anrufen, geben Sie vor dieser Nummer auch eine 1 ein. Genau wie in Japan.

Nimm Japan. Auf die Festnetzanschlüsse der Provinzen wird mit einer 0 auf der Vorderseite zugegriffen. Wenn Sie jedoch von außerhalb Japans wählen, benötigen Sie diese 0 nicht.

Handynummern in China sind 10-stellig und in Hongkong sind sie 8. Wenn Ihr Formular das Land erfasst, fragen Sie nicht einmal nach dem Ländercode am Anfang der Nummer - zeigen Sie ihn einfach automatisch in schreibgeschütztem Text direkt neben an die Nummer, die sie eingeben müssen.

Die Liste geht weiter.

Überprüfen Sie einfach die Anzahl der Ziffern (stellen Sie sicher, dass keine Buchstaben akzeptiert werden) und erleichtern Sie dem Endbenutzer die Eingabe der richtigen Anzahl von Ziffern. Das heißt, Sie sollten keine Landesvorwahl eingeben müssen. Wenn Ihr Formular sehr intelligent ist, müssen sie möglicherweise nicht einmal die Vorwahl eingeben, wenn es sich um eine Festnetznummer handelt. Oder wenn sie anfangen, Dinge wie einen Zugangscode wie 0 vor einer japanischen Nummer einzugeben, lassen Sie sie einfach wissen, dass sie das nicht müssen.

Alle anderen Charaktere außer den Ziffern sollten dann ein strittiger Punkt sein - sie haben keine Chance, sie einzugeben.

0
Todd Main