Ich möchte eine Telefonnummer für die Anzeige in Javascript neu formatieren (ersetzen, nicht validieren - es gibt viele Referenzen zum Validieren). Hier ist ein Beispiel für einige Daten:
- 123 4567890
- (123) 456-7890
- (123) 456-7890
- 123 456 7890
- 123.456.7890
- (leer / null)
- 1234567890
Gibt es eine einfache Möglichkeit, einen regulären Ausdruck zu verwenden, um dies zu tun? Ich suche nach dem besten Weg, dies zu tun. Gibt es einen besseren Weg?
Ich möchte die Nummer wie folgt neu formatieren: (123) 456-7890
javascript
regex
Matt K.
quelle
quelle
Antworten:
Angenommen, Sie möchten das Format "
(123) 456-7890
":Hier ist eine Version, die den optionalen
+1
internationalen Code zulässt :quelle
return (!m) ? null
zu ,return (!m) ? ""
nachdem diese Funktion hinzugefügt wird .'' + phoneNumberString
ist das gleiche wiephoneNumberString
... Es ist bereits eine Zeichenfolge.formatPhoneNumber(8001231234)
Mögliche Lösung:
quelle
quelle
x = x.replace(/[^\d]+/g, '') .replace(/(\d{1})(\d{3})(\d{3})(\d{4})/, '+$1 ($2) $3-$4');
funktioniert, um zum Beispiel '+1' vor der Telefonnummer hinzuzufügenDiese Antwort basiert auf der Antwort der Maerics. Es unterscheidet sich hauptsächlich darin, dass es teilweise eingegebene Telefonnummern akzeptiert und die eingegebenen Teile formatiert.
quelle
(${match[1]}${match[2] ? ') ' : ''}${match[2]}${match[3] ? '-' : ''}${match[3]}
newstring.length < oldstring.length
ODER, um die Cursorposition zu verfolgen und herauszufinden, wann der Benutzer gerade einen Abstand zwischen diesen Trennzeichen hat, z. B.if (cursorPosition === 4 && numericString.length > 3)
Ich benutze diese Funktion, um US-Nummern zu formatieren.
Es werden fast alle denkbaren Möglichkeiten zum Schreiben einer US-Telefonnummer akzeptiert. Das Ergebnis wird in eine Standardform von (987) 654-3210 x123 formatiert
quelle
rückwärts denken
Nehmen Sie nur die letzten Ziffern (bis zu 10) und ignorieren Sie die erste "1".
Beispiel Eingabe / Ausgabe während der Eingabe
quelle
quelle
Hier ist eine, die sowohl Telefonnummern als auch Telefonnummern mit Nebenstellen akzeptiert.
quelle
Mit diesen Funktionen können Sie gültige Telefonnummern überprüfen und normalisieren:
quelle
Ich habe die Antwort von David Baucum um die Unterstützung von Erweiterungen mit einer Länge von bis zu 4 Stellen erweitert. Es enthält auch die in der ursprünglichen Frage angeforderten Klammern. Diese Formatierung funktioniert während der Eingabe in das Feld.
quelle
Fast alle haben Probleme, wenn der Benutzer versucht, die Trennzeichen zurück zu drücken, insbesondere von der Mitte der Zeichenfolge aus.
Hier ist eine Abfragelösung, die dies erledigt und außerdem sicherstellt, dass der Cursor beim Bearbeiten an der richtigen Stelle bleibt:
quelle
Für US-Telefonnummern
Lassen Sie uns diesen regulären Ausdruck in kleinere Fragmente unterteilen, damit er leicht verständlich wird.
/^\(?
: Bedeutet, dass die Telefonnummer mit einer optionalen Nummer beginnen kann(
.(\d{3})
: Nach dem optionalen(
müssen 3 Ziffern stehen. Wenn die Telefonnummer keine hat(
, muss sie mit 3 Ziffern beginnen. ZB(308
oder308
.\)?
: Bedeutet, dass die Telefonnummer)
nach den ersten 3 Ziffern optional sein kann .[- ]?
: Als nächstes kann die Telefonnummer-
nach dem)
Vorhandensein oder nach den ersten 3 Ziffern einen optionalen Bindestrich ( ) haben .(\d{3})
: Dann müssen 3 weitere Ziffern vorhanden sein. ZB(308)-135
oder308-135
oder308135
[- ]?
: Nach dem zweiten dreistelligen Satz kann die Telefonnummer einen weiteren optionalen Bindestrich (-
) haben. ZB(308)-135-
oder308-135-
oder308135-
(\d{4})$/
: Schließlich muss die Telefonnummer mit vier Ziffern enden. ZB(308)-135-7895
oder308-135-7895
oder308135-7895
oder3081357895
.Referenz :
http://www.zparacha.com/phone_number_regex/
quelle