Heim > Web-Frontend > js-Tutorial > Arbeiten mit Telefonnummern in JavaScript

Arbeiten mit Telefonnummern in JavaScript

Jennifer Aniston
Freigeben: 2025-02-20 10:39:08
Original
642 Leute haben es durchsucht

Arbeiten mit Telefonnummern in JavaScript

Wenn Sie Daten von Benutzern sammeln, gibt es zwei wichtige Herausforderungen. Sammeln dieser Informationen und validieren. Einige Arten von Informationen sind unkompliziert - zum Beispiel könnte das Alter eines Menschen nicht wirklich einfacher sein, um zu sammeln und zu validieren. Die Namen sind nicht so einfach wie sie klingen, aber Sie sorgten für Kantenfälle und internationale Variationen - zum Beispiel Patronymik, Mononymous oder sogar nur Menschen mit gepfedernden Nachnamen - Sie können nicht zu weit falsch gehen (obwohl viele Anwendungen und viele Anwendungen und Dienstleistungen tun!). E -Mail -Adressen haben zwar theoretisch sehr einfach zu validieren, haben jedoch ihre eigenen Herausforderungen - dennoch gibt es viele regelmäßige Ausdrücke in freier Wildbahn, die nicht ganz richtig sind.

und dann gibt es Telefonnummern. Diese sind schwer. Wirklich hart. In diesem Artikel werde ich einige der Herausforderungen beim Sammeln, Validieren und Anzeigen von Telefonnummern erörtern.

Key Takeaways

  • Telefonnummern sind aufgrund ihrer unterschiedlichen Formate und der dynamischen Natur der Nummerierungssysteme global komplex zu handhaben.
  • .
  • reguläre Ausdrücke reichen häufig nicht aus, um die internationalen Telefonnummern aufgrund ihrer Komplexität und Variabilität zu validieren.
  • Der E.164 -Standard ist entscheidend für die eindeutige Darstellung der globalen Telefonnummern und bietet ein konsistentes Format für die Speicherung und das System.
  • Bibliothek von Google von Google ist ein robustes Tool zum Parsen, Validieren und Formatieren von Telefonnummern und sowohl für JavaScript- als auch für node.js -Umgebungen verfügbar.
  • Das intl-tel-Input-JQuery-Plugin verbessert die Benutzererfahrung durch Integration in libphonNumber, um internationale Telefoneingabefelder effektiv zu verarbeiten.
  • Berücksichtigen Sie immer rechtliche und benutzerfreundliche Probleme beim Sammeln von Telefonnummern, stellen Sie sicher, dass die lokalen Vorschriften eingehalten werden und das Vertrauen und den Komfort von Benutzern aufrechterhalten werden.

Warum Telefonnummern unterschiedlich sind

Vielleicht denken Sie, da Telefonnummern ein ziemlich starres Format wie folgt folgen:

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

… dass es einfach sein sollte, einen einfachen regulären Ausdruck zu konstruieren, um sie zu validieren. Hier ist eins:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Halten Sie genau dort an. Für den Anfang finden Sie hier nur einige Variationen der obigen Zahl, die alle vollkommen gültig sind:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

basierend darauf wissen wir, dass der reguläre Ausdrucksgeschein nicht so einfach ist, wie wir es zum ersten Mal dachten - aber das ist nur die Hälfte davon. Diese Beispiele gelten nur für eine US-amerikanische Zahl. Sicher, wenn Sie wissen, dass die Anzahl, die Sie sammeln, für ein bestimmtes Land sein wird, können Sie möglicherweise einen regulären Ausdruck verwenden. Ansonsten wird dieser Ansatz nicht reduziert.

Schauen wir uns einige der anderen Probleme in Bezug auf Telefonnummern an und warum sie unsere Arbeit noch schwieriger machen.

Zahlen ändern

Alle Arten von externen Faktoren können Auswirkungen auf die Telefonnummerierung haben. Ganze Länder kommen und gehen und führen neue Landpräfixe ein. Neue Klassifikationen von Zahlen führen neue Nummerierungssysteme ein-Premium-Rate, lokaler Rate, gebührenfrei usw. Wenn ein Träger aus einer Reihe von Zahlen ausgeht-wie leider Premium-Rate-führen sie einfach ein neues Präfix ein.

Einige Veränderungen haben enorme Auswirkungen; In Großbritannien vor einigen Jahren wurde beispielsweise das gesamte regionale Nummernsystem drastisch geändert, wobei praktisch jeder Vorwahlcode eine zusätzliche „1“ eingefügt wurde. Selbst dann hatte das Kapital ein subtil anderes System. Es dauerte wahrscheinlich ein Jahrzehnt, bis die Beschilderung im ganzen Land geändert wurde, um die Änderungen widerzuspiegeln.

Dann gab es natürlich das enorme und beispiellose Wachstum in Mobilgeräten. Es war nicht mehr die Anzahl der benötigten Telefonnummern, die weitgehend auf die Anzahl der Haushalte beschränkt waren, sondern um ein Vielfaches. Die anhaltende Belastung des Pools der verfügbaren Zahlen kann nur die Wahrscheinlichkeit weiterer Änderungen erhöhen.

Internationale Wählcodes

Es ist oft wichtig, den internationalen Wählcode einer Nummer zu erfassen. In einigen Fällen kann der Kontext bedeuten, dass er nicht erforderlich ist. Wenn Sie beispielsweise in einem einzigen Land tätig sind und Telefonnummern von einem menschlichen Betreiber verwendet werden, benötigen Sie sie möglicherweise nicht. Für alles, was automatisiert ist - z. B. das Senden von SMS -Nachrichten - oder um sie effektiv zu validieren, müssen Sie das Prefix des Landes erfassen.

Die Bibliothek der Länder enthält eine Reihe geografischer Informationen, die internationale Wählcodes enthalten. Hier ist ein Auszug aus Ländern.json aus dieser Bibliothek:

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, zeigt dies, dass Österreich den internationalen Wählcode 43 verwendet.

Wie können wir diese Informationen verwenden? Verwenden Sie die Magie von Lodash (oder Unterstrich), es gibt einige Möglichkeiten, wie wir Wählcode-bezogene Informationen abfragen können.

Zum Beispiel, um herauszufinden, ob ein bestimmter Wählcode gültig ist:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt natürlich eine effizientere Möglichkeit, dies zu tun, sodass dies und die folgenden Beispiele nicht unbedingt für die Produktion optimiert werden.

wir können die Länder nachschlagen, die einen bestimmten Wählcode verwenden:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schließlich können wir die Wählcodes für ein bestimmtes Land erhalten:

<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie finden diese Funktionen als Modul zusammen mit Unit -Tests im Repository, das den Artikel begleitet.

sogar internationale Wählcodes sind jedoch nicht so einfach, wie Sie vielleicht denken. Das Format kann variieren - 1, 43, 962 1868 sind alle gültigen Codes. Es gibt nicht unbedingt eine Eins-zu-Eins-Zuordnung. 44 Zum Beispiel wird nicht nur für das Vereinigte Königreich, sondern auch für die Isle of Man, Guernsey und Jersey verwendet.

Zahlen müssen ebenfalls geändert werden, wo Sie wählen. Aus dem Ausland, um eine britische Nummer anzurufen, müssen Sie das führende Null und das Präfix mit dem Wählcode 44:

fallen lassen

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

… wird…

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie können das "" auch durch ein Doppel Null ersetzen:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um die Dinge noch weiter zu komplizieren, variieren einige Zahlen von außerhalb eines Landes, je nachdem, welches Land Sie aus wählen. In den USA müssen beispielsweise Zahlen auch mit dem US -Exit -Code 011 vorangestellt werden, sodass das obige Beispiel:

wird

<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zum Glück gibt es ein Format, mit dem wir diese Variationen umgehen können.

e.164

Zum Glück für Entwickler gibt es einen eindeutigen, international anerkannten Standard für Telefonnummern überall auf der Welt, das E.164 namens E.164. Das Format ist wie folgt unterteilt:

  • Eine Telefonnummer kann maximal 15 Ziffern
  • haben
  • Der erste Teil der Telefonnummer ist der Ländercode
  • Der zweite Teil ist der Nationale Zielcode (NDC)
  • Der letzte Teil ist die Abonnentennummer (SN)
  • Die NDC und SN zusammen werden gemeinsam als nationale (signifikante) Zahl als
  • bezeichnet

( Quelle )

Hier ist die Zahl von früher, in E.164 -Format:

<span>var _ = require('lodash')
</span><span>, data = require('world-countries')
</span>module<span>.exports = {
</span><span>/**
</span><span>* Determines whether a given international dialing code is valid
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return bool
</span></span><span>*/
</span><span>isValid : function(code) {
</span><span>var codes = _.flatten(_.pluck(data, 'callingCode'));
</span><span>return _.contains(codes, code);
</span><span>}
</span><span>// ...
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir können dasselbe Format für als Beispiel als Beispiel für eine in London ansässige britische Nummer verwenden:

<span>/**
</span><span>* Gets a list of countries with the specified dialing code
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return array An array of two-character country codes
</span></span><span>*/
</span><span>getCountries : function(code) {
</span><span>var countryEntries = _.filter(data, function(country){
</span><span>return (_.contains(country.callingCode, code));
</span><span>})
</span><span>return _.pluck(countryEntries, 'cca2');
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir können jede gültige Telefonnummer unter Verwendung des E.164 -Formats darstellen. Wir wissen, auf welches Land es sich bezieht, und es ist unverwöhnlich - es ist die ideale Wahl für die Lagerung. Es wird auch üblicherweise für telefonisch -basierte Dienste wie SMS -Anbieter verwendet, wie wir etwas später sehen werden.

Es gibt natürlich einen Haken. Der E.164 -Standard ist vielleicht großartig für die Aufbewahrung, aber für zwei Dinge schrecklich. Erstens würde praktisch niemand seine Nummer in diesem Format eingeben oder vorlesen. Zweitens ist es in Bezug auf seine Lesbarkeit hoffnungslos. Später werden wir jedoch sehen, dass es Möglichkeiten gibt, Zahlen für Menschen zu formatieren.

Telefonnummern sammeln

Schauen wir uns zunächst das Problem der Sammlung von Telefonnummern an.

html5 und die "tel" Eingabe

HTML5 führte einen neuen "Tel" -Negeldypen ein. Aufgrund der Probleme in Bezug auf die Variationen im Format ist jedoch keine Einschränkungen für das ein, was der Benutzer eingeben kann, und es führt jedoch keine Validierung auf die gleiche Weise wie beispielsweise das E -Mail -Element durch. Trotzdem gibt es einige Vorteile - wenn sie auf einer mobilen Site verwendet werden, wird normalerweise die Telefon -Tastatur eines Benutzers angezeigt und nicht ein herkömmliches Tastaturlayout.

Sie können ein einzelnes Element verwenden, um eine Zahl zu sammeln:

<span>/**
</span><span>* Gets the dialing codes for a given country
</span><span>*
</span><span>* <span>@param string country The two-character country code
</span></span><span>* <span>@return array An array of strings representing the dialing codes
</span></span><span>*/
</span><span>getCodes : function(country) {
</span><span>// Get the country entry
</span><span>var countryData = _.find(data, function(entry) {
</span><span>return (entry.cca2 == country);
</span><span>});
</span><span>// Return the code(s)
</span><span>return countryData.callingCode;
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

Alternativ können Sie eine Zahl in separate Elemente unterteilen:

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Browserunterstützung ist ziemlich gut (z. B. Chrom 6, Firefox 4, Safari 5, dh 10), aber selbst in einem älteren Browser fällt es einfach auf ein einfaches altes Textfeld zurück.

Sollten wir entscheiden, dass ein regulärer Ausdruck ausreicht - und denken Sie daran, dass es Probleme gibt - dann können wir das Musterattribut verwenden, um eine Validierung hinzuzufügen:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

maskierte Eingänge

maskierte Eingänge sind eine gemeinsame Technik, um die Benutzereingaben einzuschränken oder Hinweise auf das erwartete Format zu geben. Wenn Sie jedoch nicht sicher sein können, dass die Zahlen immer für ein bestimmtes Land sein werden, ist es sehr schwierig, internationale Variationen zu erfüllen. Es ist jedoch eine Sache, Benutzer zu ärgern, indem sie Annahmen treffen-einen Nicht-US-Benutzer, einen Status und einen Zip-Code bereitzustellen. Es ist eine ganz andere, ein Formular völlig unbrauchbar zu machen, beispielsweise indem sie Menschen dazu zwingen, Zahlen im Format eines bestimmten Landes zu liefern.

Sie können jedoch effektiv sein, wenn Sie wissen, dass bestimmte Zahlen innerhalb eines bestimmten Bereichs liegen. Hier ist ein Beispiel für eine maskierte Eingabe für US -Telefonnummern.

ein besserer Weg

Es gibt eine bessere und flexiblere Möglichkeit, Telefonnummern in Form eines hervorragenden JQuery -Plugins zu sammeln. Es ist unten dargestellt.

Arbeiten mit Telefonnummern in JavaScript

Sie können hier auch mit einer Live -Demo spielen.

Nutzung ist einfach - stellen Sie sicher .

Erstellen Sie als nächstes ein Element:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

schließlich intialisieren Sie es wie folgt:

<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wenden Sie sich an eine vollständige Liste der Konfigurationsoptionen, wenden Sie sich an die Dokumentation. Später werden wir uns die UtilsScript -Option ansehen, aber zuerst müssen wir uns in eine andere nützliche Bibliothek eintauchen.

Einführung von libphonenumber

Zum Glück gibt es eine Lösung für viele unserer Validierung und Formatierung von Leiden. Die Bibliothek von Google wurde ursprünglich für das Android -Betriebssystem entwickelt und bietet alle möglichen Methoden und Versorgungsunternehmen für die Arbeit mit Telefonnummern. Besser noch, es wurde von Java zu JavaScript portiert, sodass wir es in Web- oder Node.js -Anwendungen verwenden können.

Installation

Sie können die Bibliothek von der Projekt -Homepage herunterladen - wie Sie vielleicht erwarten - Google Code.

Sie können es auch über NPM bekommen. Hier ist die Projektseite und um aus der Befehlszeile zu installieren:

<span>var _ = require('lodash')
</span><span>, data = require('world-countries')
</span>module<span>.exports = {
</span><span>/**
</span><span>* Determines whether a given international dialing code is valid
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return bool
</span></span><span>*/
</span><span>isValid : function(code) {
</span><span>var codes = _.flatten(_.pluck(data, 'callingCode'));
</span><span>return _.contains(codes, code);
</span><span>}
</span><span>// ...
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie können es auch mit Bower installieren:

<span>/**
</span><span>* Gets a list of countries with the specified dialing code
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return array An array of two-character country codes
</span></span><span>*/
</span><span>getCountries : function(code) {
</span><span>var countryEntries = _.filter(data, function(country){
</span><span>return (_.contains(country.callingCode, code));
</span><span>})
</span><span>return _.pluck(countryEntries, 'cca2');
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wenn Sie darüber nachdenken, es in einem Front-End-Projekt zu verwenden, werden Sie jedoch gewarnt-selbst wenn Sie Minimed und Compressed bei über 200 kb erreichen.

Parsingnummern

Um die wichtigsten Funktionen der Bibliothek zu demonstrieren, gehe ich davon aus, dass Sie eine Node.js -Anwendung schreiben. Sie finden einen Beispielcode im Repository, der diesen Artikel ergänzt.

Importieren Sie zuerst TelefonUtil:

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt können Sie mit seiner Parse () -Methode eine Telefonnummer interpretieren:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt eine Reihe von Dingen, die wir damit machen können. Importieren wir zunächst einige Konstanten aus der Bibliothek. Ändern Sie Ihre Erfordernisse in Folgendes:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt können wir Folgendes machen:

<br>
{<br>
"name": {<br>
"common": "Austria",<br>
"official": "Republic of Austria",<br>
// ... //<br>
},<br>
// ... //<br>
"callingCode": ["43"],<br>
// ... //<br>
},<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Ausgabe davon ist wie folgt:

<span>var _ = require('lodash')
</span><span>, data = require('world-countries')
</span>module<span>.exports = {
</span><span>/**
</span><span>* Determines whether a given international dialing code is valid
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return bool
</span></span><span>*/
</span><span>isValid : function(code) {
</span><span>var codes = _.flatten(_.pluck(data, 'callingCode'));
</span><span>return _.contains(codes, code);
</span><span>}
</span><span>// ...
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Versuchen Sie nun, die Nummer ohne den internationalen Wählcode zu analysieren:

<span>/**
</span><span>* Gets a list of countries with the specified dialing code
</span><span>*
</span><span>* <span>@param string code
</span></span><span>* <span>@return array An array of two-character country codes
</span></span><span>*/
</span><span>getCountries : function(code) {
</span><span>var countryEntries = _.filter(data, function(country){
</span><span>return (_.contains(country.callingCode, code));
</span><span>})
</span><span>return _.pluck(countryEntries, 'cca2');
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies wirft die folgende Ausnahme aus:

<span>/**
</span><span>* Gets the dialing codes for a given country
</span><span>*
</span><span>* <span>@param string country The two-character country code
</span></span><span>* <span>@return array An array of strings representing the dialing codes
</span></span><span>*/
</span><span>getCodes : function(country) {
</span><span>// Get the country entry
</span><span>var countryData = _.find(data, function(entry) {
</span><span>return (entry.cca2 == country);
</span><span>});
</span><span>// Return the code(s)
</span><span>return countryData.callingCode;
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

Dies liegt daran, dass es unmöglich zu interpretieren ist, ohne ihm zu sagen, für welches Land die Zahl ist. Die Parse () -Methode nimmt einen optionalen zweiten Parameter vor, nämlich der ISO 3166-1 Alpha-2 (d. H. Zwei-Zeichen) Ländercode.

Wenn Sie die Zeile erneut versuchen, aber diesmal „uns“ als zweites Argument bestehen, werden Sie feststellen, dass die Ergebnisse wie zuvor sind:

<br>
020 7925 0918<br>
Nach dem Login kopieren

Sie können auch mit den Formaten herumspielen; All dies wird auch funktionieren:

<br>
+44 20 7925 0918<br>
Nach dem Login kopieren

eine britische Zahl der Vereinigten Königreich zu interpretieren:

<br>
0044 20 7925 0918<br>
Nach dem Login kopieren

Dies gibt Folgendes aus:

<br>
011 44 20 7925 0918<br>
Nach dem Login kopieren

Sobald Sie eine Nummer analysiert haben, können Sie sie validieren - wie wir im nächsten Abschnitt sehen werden.

Validierung einer Zahl

Validierung folgt einem ähnlichen Muster; Auch hier gibt es ein zweites optionales Argument, aber eines, das Sie benötigen, wenn das Land nicht implizit angegeben ist.

Hier sind einige Beispiele für gültige Zahlen, bei denen der Ländercode entweder als zweites Argument bereitgestellt oder innerhalb des ersten Arguments enthalten ist:

<br>
+12024561111<br>
Nach dem Login kopieren

Wenn Sie den Ländercode nicht liefern oder nicht impliziert ist, erhalten Sie den gleichen Fehler wie zuvor:

<br>
+442079250918<br>
Nach dem Login kopieren

Hier sind einige Beispiele, bei denen die Validierung fehlschlägt und falsch zurückgibt:

<span><span><span><input</span> type<span>="tel"</span> name<span>="number"</span>></span></span>
Nach dem Login kopieren

werden jedoch gewarnt, da eine ungültige Zahl eine Ausnahme ausgeben kann:

<span><!-- area code and number -->
</span><span><span><span><input</span> type<span>="tel"</span> name<span>="number"</span>></span>
</span><span><!-- country code, area code and number -->
</span><span><span><span><input</span> type<span>="tel"</span> name<span>="country"</span> size<span>="4"</span>></span> <span><span><input</span> type<span>="tel"</span> name<span>="area"</span> size<span>="6"</span>></span> <span><span><input</span> type<span>="tel"</span> name<span>="number"</span> size<span>="8"</span>></span>
</span><span><!-- US-style -->
</span>(<span><span><span><input</span> type<span>="tel"</span> size<span>="3"</span>></span>) <span><span><input</span> type<span>="tel"</span> size<span>="3"</span>></span> - <span><span><input</span> type<span>="tel"</span> size<span>="4"</span>></span></span>
Nach dem Login kopieren

Ermittlung des Typs einer Zahl

Manchmal ist es nützlich, den Typ einer Telefonnummer zu kennen. Zum Beispiel möchten Sie möglicherweise sicherstellen, dass Ihnen eine Mobiltelefonnummer erhalten wurde-möglicherweise planen Sie, SMS-Nachrichten zu senden, z.

Die GetNumberType () -Funktion der Bibliothek macht genau das. Schauen wir uns an.

Die Funktion nimmt eine analysierte Telefonnummer als Argument an:

<span><span><span><input</span> type<span>="tel"</span> name<span>="number"</span> pattern<span>="^(?:\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4}$"</span>></span></span>
Nach dem Login kopieren
Der Rückgabewert ist eine Konstante, die im Submodul des PhoneNumbertype definiert ist.

als Beispiel, lassen Sie uns abfragen, ob die betreffende Nummer ein Mobiltelefon oder eine feste Zeile ist:

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

wie das Thema des Themas zu sein scheint, gibt es natürlich einen Haken. Manchmal kann auch die Bibliothek für libphonenumme nicht sicher sein. US -Zahlen können beispielsweise nicht leicht zu unterscheiden; Daher die konstante pnt.fixed_line_or_mobile.

Wir müssen nur unseren Beispielcode ändern, um diese Unsicherheit widerzuspiegeln:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt auch eine Reihe anderer Möglichkeiten. Hier ist die vollständige Liste derzeit:

  • pnt.fixed_line
  • pnt.mobile
  • pnt.fixed_line_or_mobile
  • pnt.toll_free
  • pnt.premium_rate
  • pnt.shared_cost
  • pnt.voip
  • pnt.personal_number
  • pnt.pager
  • pnt.uan
  • pnt.UnNown

Wie Sie sehen können, spiegelt der Pnt.unnown die Tatsache wider, dass wir nicht unbedingt Informationen mit proselligem Informationen sammeln können. Zusammenfassend lässt sich sagen, dass diese Funktion als schnelle Erstprüfung nützlich sein kann, aber wir können uns nicht darauf verlassen.

Ist die Nummer im Dienst?

Es gibt viele Telefonnummern, die validieren, aber nicht verwendet werden. Sie wurden möglicherweise getrennt, noch nicht zugewiesen, oder vielleicht wurde eine SIM -Karte in eine Toilette fallen gelassen.

Wenn Sie sicherstellen müssen, dass eine Nummer nicht nur gültig, sondern auch aktiv ist, sind Ihnen eine Reihe von Optionen geöffnet.

Ein Ansatz besteht darin, die Nutzungsnummer zu erfordern, ihre Nummer auf die gleiche Weise zu bestätigen, wie es möglicherweise von Benutzern ihre E -Mail -Adresse bestätigt. Sie können einen Dienst wie Twilio verwenden, um eine SMS zu senden oder sogar einen Anruf zu tätigen.

Hier ist ein sehr einfacher Code -Snippet zum Generieren und Senden eines Bestätigungscodes per SMS mit Twilio:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es ist dann eine triviale Übung, die Benutzer aufzufordern, den Code in ein Formular in Ihrer Web -App einzugeben, um ihn zu überprüfen - oder Sie könnten den Personen sogar erlauben, ihre Nummer zu validieren, indem Sie auf die Nachricht antworten.

Es gibt auch (bezahlte) Dienste, die prüfen, ob eine Nummer für Sie in Echtzeit in Betrieb ist, z. B. dieses von Byteplant.

Andere Ausgaben

legal

Wie bei allen persönlichen Daten gibt es auch viele rechtliche Probleme, auf die man sich bewusst werden muss. In Großbritannien ist der Telefonpräferenzdienst (TPS) beispielsweise ein nationales Register von Telefonnummern, die explizit von Personen registriert wurden, die keine Marketingkommunikation erhalten möchten. Es gibt bezahlte Dienstleistungen, die APIs anbieten, um eine Nummer gegen dieses Register zu überprüfen, wie beispielsweise

.

Usability -Überlegungen

Es ist sehr üblich, bis zu drei verschiedene Telefonnummern in einer einzigen Form anzufordern. Zum Beispiel Tag, Abend und Mobile.

Es lohnt sich auch, sich daran zu erinnern, dass das Anfragen nach Telefonnummern über das Internet eher aufdringlich wirken kann. Wenn jemand nicht bereit ist, diese Informationen bereitzustellen, obwohl Sie es zu einem erforderlichen Feld gemacht haben, wird er wahrscheinlich eines von zwei Dingen tun:
  • Versuch, die Validierung zu „täuschen“. Abhängig vom Ansatz können sie so etwas wie „Ex -Verzeichnis“ eingeben oder eine ungültige Nummer eingeben - z. B. eine, die nur Zahlen enthält.
  • weggehen.

Kombinieren Sie das Jquery -Plugin mit libphonenumber

Sie erinnern sich vielleicht, dass das JQuery -Plugin eine ziemlich kryptisch benannte Option namens UtilsScript hat.

Diese Option ermöglicht es uns, die Validierung und Formatierungsfunktionen von libphonennummer zu nutzen. Nachdem ein Land ausgewählt wurde-entweder mit der Dropdown-Verwendung oder durch Eingeben des Wählcode-wird das Textfeld in eine maskierte Eingabe umgewandelt, die das Nummerierungsformat dieses Landes widerspiegelt.

Das Plugin enthält eine verpackte Version von libphonenumber; Geben Sie den Pfad zu dieser Datei wie folgt an den Konstruktor weiter:

<br>
202-456-1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wie bereits erwähnt, denken Sie daran, dass dieser Ansatz aufgrund der Dateigröße der Bibliothek libphonernummer mit Vorsicht verwendet werden sollte. Wenn Sie es hier im Konstruktor verweisen, bedeutet dies jedoch, dass es auf Bedarf geladen werden kann.

Telefonnummern

anzeigen

Wir haben uns untersucht, wie wir Zahlen formatieren können, wenn sie angezeigt werden, um „freundlicher“ zu sein, indem wir Formate wie PNF.International und PNF.National.

verwenden können.

Wir können auch die TEL- und Callto -Protokolle verwenden, um Telefonnummern Hyperlinks hinzuzufügen, die auf mobilen Websites speziell nützlich sind. So können Benutzer eine Nummer direkt von einer Webseite wählen.

Um dies zu tun, brauchen wir das E.164 -Format für den Link selbst - zum Beispiel:

<br>
^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Natürlich können Sie die Format () -Methode der Bibliothek der LiBPhonenumme verwenden, um sowohl die e.164-Version (PNF.E164) als auch die benutzerfreundlichere Anzeigeversion zu rendern.

microdata

Wir können auch Mikrodaten verwenden, um Telefonnummern semantisch zu markieren. Hier ist ein Beispiel. Beachten Sie die Verwendung von itemProp = "Telefon", um den Link zu markieren:

<br>
202 456 1111<br>
(202) 456 1111<br>
2024561111<br>
1-202-456-1111<br>
1-202-456-1111 x1234<br>
1-202-456-1111 ext1234<br>
1 (202) 456-1111<br>
1.202.456.1111<br>
1/202/456/1111<br>
12024561111<br>
+1 202 456 1111<br>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zusammenfassung

In diesem Artikel haben wir das Hornissennest geöffnet, das Telefonnummern ist. Es sollte inzwischen ziemlich offensichtlich sein, dass es alle möglichen Komplexitäten, Feinheiten und Gotchas gibt, die Sie sich bewusst sein müssen, wenn Sie sie sammeln, validieren und anzeigen müssen.

Wir haben uns einige Methoden zum Sammeln von Zahlen angesehen-den Eingangstyp „Tel“, maskierte Eingänge und schließlich das Intl-Tel-Input-JQuery-Plugin.

Wir haben uns dann einige der Probleme um die Validierung angesehen und warum gemeinsame Ansätze wie reguläre Ausdrücke oft unzureichend sind, insbesondere wenn Sie international werden.

Wir haben uns die Bibliothek von Google angesehen. Verwenden Sie es, um den Typ der Telefonnummern zu analysieren, zu validieren, anzeigen und zu bestimmen.

Wir haben das intl-tel-Input-Plugin mit libphonenumber für ein noch besseres Benutzererlebnis kombiniert, wenn auch eine Kosten in Bezug auf die Leistung.

Schließlich haben wir uns angesehen, wie wir Telefonnummern in unserer HTML markieren könnten.

Es gibt einige Empfehlungen, die ich für den Umgang mit Telefonnummern machen würde:

  • Wenn Sie nicht nur in einem einzigen Land tätig sind, sind Sie sich der internationalen Unterschiede bewusst.
  • Verwenden Sie maskierte Eingänge mit Vorsicht.
  • Seien Sie sehr vorsichtig mit der regelmäßigen expressionsbasierten Validierung.
  • Verwenden Sie nach Möglichkeit E.164 zur Speicherung.
  • Verwenden Sie die Bibliothek von Google.
  • beim Anzeigen von Zahlen, formatieren Sie sie nach Möglichkeit, verwenden Sie die Tel. Oder Callto: Link -Typ und verwenden Sie Microdata.
FAQs über Telefonnummern in JavaScript

Wie kann man den Ländercode von einer Telefonnummer in JavaScript erhalten? Diese Bibliothek ist ein leistungsstarkes Werkzeug zum Parsen, Formatieren und Validieren von Telefonnummern, was es zu einer idealen Wahl für das genaue Extrahieren von Ländercodes macht. Um loszulegen, müssen Sie die Bibliothek mit NPM installieren und dann in Ihre JavaScript -Datei importieren. Nach dem Import können Sie die PhonNumberutil -Klasse verwenden, um effektiv mit Telefonnummern zu arbeiten. Diese Funktion nimmt die Telefonnummer als Zeichenfolge und einen optionalen Standard-Region-Code an, der in der Regel der ISO 3166-1 Alpha-2-Ländercode ist. Nach dem Parsen können Sie auf das PhoneNumber -Objekt zugreifen und die GetCountrycode -Methode verwenden, um den Ländercode als Ganzzahl zu erhalten. Dieser Ansatz gewährleistet die Genauigkeit bei der Behandlung internationaler Telefonnummern und berücksichtigt verschiedene regionale Formate

So validieren Sie eine Telefonnummer mit einem Ländercode in JavaScript? Um eine genaue Validierung zu gewährleisten, besteht ein wirksamer Ansatz darin, die Bibliothek „libphonenumme“ durch Google zu verwenden. Diese Bibliothek bietet umfassende Tools zum Parsen, Formatieren und Validieren von Telefonnummern und macht es zu einer zuverlässigen Wahl für diesen Zweck. . Nach dem Import können Sie die PhonNumberutil -Klasse der Bibliothek nutzen, um die Validierung der Telefonnummer durchzuführen. Mit der IsvalidNumber -Funktion können Sie eine analysierte Telefonnummer validieren und true zurückgeben, wenn die Nummer gültig oder falsch ist, wenn dies nicht der Fall ist. Durch Parsen der Telefonnummer mithilfe der Funktionen der Bibliothek stellen Sie sicher, dass sie sich an das spezifische Format und die Regeln des Ländercodes hält. Umgang mit internationalen Telefonnummern mit unterschiedlichen Formaten und Standards. Durch die Implementierung der Bibliothek „libphonenumme“ können Sie die Genauigkeit und Zuverlässigkeit der Telefonnummer -Validierung in Ihren JavaScript -Anwendungen erheblich verbessern. Die Trennung des Ländercode von einer Telefonnummer in JavaScript ist eine häufige Aufgabe, insbesondere wenn es sich um internationale Telefonnummern handelt. Ein praktischer Ansatz beinhaltet die Verwendung regelmäßiger Ausdrücke und Streichmanipulation. Sie können ein reguläres Ausdrucksmuster definieren, das dem Ländercode entspricht, der normalerweise als Pluszeichen dargestellt wird, gefolgt von einer oder mehreren Ziffern. Der reguläre Ausdruck wie (d) erfasst den Ländercode effizient aus der Telefonnummer. Die EXEC -Methode gibt ein Array zurück, das den übereinstimmenden Teil der Telefonnummer und alle erfassten Gruppen enthält. In diesem Fall kann auf den erfassten Ländercode aus der ersten Gruppe im Array (Index 1) zugegriffen werden. Wenn Sie diesen Vorgang befolgen, können Sie den Ländercode genau von der Telefonnummer trennen und es zur weiteren Verwendung in Ihrer JavaScript -Anwendung zur Verfügung stellen.

Diese Methode ist vielseitig und kann für die Arbeit mit verschiedenen Telefonnummerformaten angepasst werden. Unabhängig davon, ob Sie die Eingabe von Benutzern oder die Verarbeitung von Telefonnummern aus externen Quellen bearbeiten, stellt dieser Ansatz sicher, dass Sie den Ländercode zuverlässig extrahieren können, einen wertvollen Schritt bei der Arbeit mit internationalen Telefonnummern.

Wie format ich meine Telefonnummer international? Eine international formatierte Telefonnummer besteht in der Regel aus drei Hauptkomponenten: dem Ländercode, der Vorwahl (falls zutreffend) und der lokalen Telefonnummer. Der Ländercode wird durch ein Plus sign () gefolgt vom numerischen Code wie 1 für die Vereinigten Staaten dargestellt. Es dient als allgemein anerkannter Kennung für das Land oder die Region. Die lokale Telefonnummer folgt, die eine Länge variieren kann und zusätzliche Separatoren oder Interpunktion enthalten kann. Das spezifische Format kann zwischen den Ländern unterschiedlich sein. Daher ist es wichtig, lokale Konventionen zu befolgen, sofern verfügbar. Durch die Einhaltung dieser Struktur stellen Sie sicher, dass Telefonnummern über internationale Grenzen hinweg leicht erkennbar und verwendbar sind.

Das obige ist der detaillierte Inhalt vonArbeiten mit Telefonnummern in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage