Daher entwerfe ich eine Webseite, die für globale Benutzer verwendet wird, einschließlich Benutzer aus Kanada, den USA, Indien, Großbritannien usw. Ich muss für dieses Telefonnummernfeld Validierungen anwenden, bin mir jedoch nicht sicher, wie ich am besten vorgehen soll .
Einige der gültigen Formate, die ich mir vorstellen kann, sind:
- 1800123456 (Indien)
- Verwendung von "-" in US-Telefonnummern
Ich bin etwas verwirrt darüber, welche Sonderzeichen ein Benutzer eingeben darf (z. B. - / ()
). Wie haben andere das in der Vergangenheit gelöst?
Antworten:
Nur weil Sie etwas einschränken können (für das Sie als Programmierer bezahlt werden, um Code zu schreiben), heißt das nicht, dass Sie dies tatsächlich tun sollten.
Was bringt es, eine Zahl zu validieren? Warum ist es nützlich? Schlägt die Eingabe von "0800DIALTHIS" oder "私 私 は 電話 番号 を を 持 っ い な" oder "(499) 123-45-67 добавочный 4425" fehl? Das wird es sicherlich (Sie sagen "global", oder?), Während die Benutzer Ihnen nur wichtige Informationen über die telefonische Kontaktaufnahme übermitteln 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 Versenden von SMS-Spam verwendet - oder werden sie von Managern manuell gewählt? In letzterem Fall ist es in Ordnung, zusätzliche Zeichen zuzulassen, da das menschliche Gehirn in der Lage ist, sie so zu analysieren, wie es für sie am besten geeignet ist. und in diesem Fall brauchen Sie wirklich keine Validierungen, was nur menschliche Benutzer ärgert.
quelle
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 zum Beispiel 06 12 34 56 78 eine gültige Telefonnummer, während 00 12 34 56 78 keine gültige Telefonnummer ist, da die Nummer nur von 01 bis 09 beginnen kann und 06 und 07 Mobiltelefone sind.
Die Telefonnummern können auch in demselben Land in verschiedenen Formaten geschrieben werden. Ich habe gesehen:
Die letzten beiden sind die internationale Form.
Im Allgemeinen:
+
Symbol nur als führendes Zeichen, Bindestriche, Punkte, Kommas und Leerzeichen.Es wird nicht empfohlen, die Validierung nach Ländern zu vertiefen. Es gibt nicht nur eine Vielzahl von Regeln, sondern auch Regeländerungen. Zum Beispiel in Frankreich gab es vor einigen Jahren keine Telefonnummern, die mit 07 oder 09 begannen. Mit der zunehmenden Anzahl von Mobiltelefonen tauchten 07. Mit VoIP tauchten Dienste mit 09 auf.
Sie können auch spezielle Nummern berücksichtigen. Beispiel: 3635 ist in Frankreich eine gültige Nummer, auch wenn sie nur vier Ziffern enthält und mit einer Nicht-Null beginnt.
quelle
+31 (0)30 1234567
31 die Niederlande, 030 die Vorwahl und 1234567 der Abonnent.Beschränken Sie die Zeichen nicht. nimm alles, was er dir gibt. Aber wenn Sie es wählen, nehmen Sie nur die Ziffern. Auch dann könnte es schief gehen. Ich war ein Jahr in Thailand, bevor ich erfuhr, dass 123-4567-9 keine Nebenstelle, sondern einen Nummernbereich von 1234567 bis 1234569 bedeutet. Als ich "12345679" wählte, funktionierte dies, weil die Telefongesellschaft die zusätzliche Ziffer ignorierte. Nimm alles, wähle nur Ziffern.
Ich liebe es, dass mein neues Telefon Leerzeichen in der Telefonnummer zulässt. Ich kann einfach so "123 456 7890" eingeben, nicht alle zusammen püriert.
quelle
Klammern, Bindestrich und Leerzeichen.
Nachdem der Benutzer die Telefonnummer eingegeben hat, die diese Symbole enthält, können Sie sie gemäß den länderspezifischen Regeln validieren (die Sie für jedes Land benötigen, um diese Regeln 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) die Verwendung von "Sonderzeichen" zum Wählen einer Nummer mit Ausnahme von Pausen beim Eingeben der Ziffern unmöglich macht.
(Ich kenne mich damit überhaupt nicht aus. Bitte korrigieren Sie mich, wenn ich falsch liege.)
quelle
Das einzige, was validiert werden muss, ist die Anzahl der Ziffern. Entspricht es dem, was Sie anrufen müssten?
Zugangscodes dürfen / dürfen nicht von einem Benutzer eingegeben werden (dh +1 für die USA). Ich sage Ihnen, warum - wenn es ein Amerikaner ist, der es eingibt, und sie nicht so versiert sind, werden sie wahrscheinlich 001 anstelle von 1 eingeben wollen. Sie wissen nicht, was der Unterschied zwischen dem und nur +1 ist. Wenn Sie Festnetzanschlüsse zwischen Ortsvorwahlen (und manchmal in derselben Ortsvorwahl) anrufen, geben Sie vor dieser Nummer auch eine 1 ein. Genau wie in Japan.
Nimm Japan. Provinziale Festnetzanschlüsse werden mit einer 0 an der Vorderseite abgerufen. Wenn Sie jedoch von außerhalb Japans anrufen, benötigen Sie diese 0 nicht.
Mobiltelefonnummern in China sind 10-stellig und in Hongkong 8-stellig. Wenn Ihr Formular ein Land erfasst, fragen Sie nicht einmal nach dem Ländercode am Anfang der Nummer - zeigen Sie ihn einfach 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 Stellen (stellen Sie sicher, dass keine Buchstaben akzeptiert werden) und erleichtern Sie dem Endbenutzer die Eingabe der richtigen Anzahl von Stellen. Das heißt, sie müssen keine Landesvorwahl eingeben. Wenn Ihr Formular sehr intelligent ist, müssen sie möglicherweise nicht einmal die Ortsvorwahl eingeben, wenn es sich um eine Festnetznummer handelt. Oder wenn sie beginnen, Dinge wie einen Zugangscode wie 0 vor einer japanischen Nummer einzugeben, lassen Sie sie einfach wissen, dass sie das nicht müssen.
Jedes andere Zeichen außer Ziffern sollte dann ein strittiger Punkt sein - sie haben keine Chance, sie einzugeben.
quelle
Google hat lib dafür:
https://github.com/googlei18n/libphonennummer
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.
quelle