Ich freue mich darauf, eine Telefonnummer für die Anzeige in Javascript neu zu formatieren (zu ersetzen, nicht zu validieren - es gibt viele Referenzen zum Validieren) Hier ein Beispiel für einige Daten:
Gibt es eine einfache Möglichkeit, einen regulären Ausdruck dafür zu verwenden? Ich suche den besten Weg, dies zu tun. Gibt es einen besseren Weg?
Ich möchte die Nummer folgendermaßen formatieren: (123) 456-7890
Angenommen, Sie möchten das Format "(123) 456-7890
":
function formatPhoneNumber(phoneNumberString) {
var cleaned = ('' + phoneNumberString).replace(/\D/g, '')
var match = cleaned.match(/^(\d{3})(\d{3})(\d{4})$/)
if (match) {
return '(' + match[1] + ') ' + match[2] + '-' + match[3]
}
return null
}
Hier ist eine Version, die den optionalen +1
internationalen Code erlaubt:
function formatPhoneNumber(phoneNumberString) {
var cleaned = ('' + phoneNumberString).replace(/\D/g, '')
var match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/)
if (match) {
var intlCode = (match[1] ? '+1 ' : '')
return [intlCode, '(', match[2], ') ', match[3], '-', match[4]].join('')
}
return null
}
formatPhoneNumber('+12345678900') // => "+1 (234) 567-8900"
formatPhoneNumber('2345678900') // => "(234) 567-8900"
Mögliche Lösung:
function normalize(phone) {
//normalize string and remove all unnecessary characters
phone = phone.replace(/[^\d]/g, "");
//check if number length equals to 10
if (phone.length == 10) {
//reformat and return phone number
return phone.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
}
return null;
}
var phone = '(123)4567890';
phone = normalize(phone); //(123) 456-7890
var x = '301.474.4062';
x = x.replace(/\D+/g, '')
.replace(/(\d{3})(\d{3})(\d{4})/, '($1) $2-$3');
Arbeitsbeispiel hier .
Ich verwende diese Funktion, um US-Nummern zu formatieren.
function formatUsPhone(phone) {
var phoneTest = new RegExp(/^((\+1)|1)? ?\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})( ?(ext\.? ?|x)(\d*))?$/);
phone = phone.trim();
var results = phoneTest.exec(phone);
if (results !== null && results.length > 8) {
return "(" + results[3] + ") " + results[4] + "-" + results[5] + (typeof results[8] !== "undefined" ? " x" + results[8] : "");
}
else {
return phone;
}
}
Es akzeptiert fast alle vorstellbaren Schreibweisen für eine US-Telefonnummer. Das Ergebnis wird in einer Standardform von (987) 654-3210 x123 formatiert
var numbers = "(123) 456-7890".replace(/[^\d]/g, ""); //This strips all characters that aren't digits
if (numbers.length != 10) //wrong format
//handle error
var phone = "(" + numbers.substr(0, 3) + ") " + numbers.substr(3, 3) + "-" + numbers.substr(6); //Create format with substrings
Diese Antwort entlehnt die Antwort der Maerics. Sie unterscheidet sich hauptsächlich dadurch, dass sie teilweise eingegebene Telefonnummern akzeptiert und die eingegebenen Teile formatiert.
phone = value.replace(/\D/g, '');
const match = phone.match(/^(\d{1,3})(\d{0,3})(\d{0,4})$/);
if (match) {
phone = `${match[1]}${match[2] ? ' ' : ''}${match[2]}${match[3] ? '-' : ''}${match[3]}`;
}
return phone
Mit diesen Funktionen können Sie gültige Telefonnummern prüfen und normalisieren:
let formatPhone = (dirtyNumber) => {
return dirtyNumber.replace(/\D+/g, '').replace(/(\d{3})(\d{3})(\d{4})/, '($1) $2-$3');
}
let isPhone = (phone) => {
//normalize string and remove all unnecessary characters
phone = phone.replace(/\D+/g, '');
return phone.length == 10? true : false;
}
Hier ist eine, die sowohl Telefonnummern als auch Telefonnummern mit Nebenstellen akzeptiert.
function phoneNumber(tel) {
var toString = String(tel),
phoneNumber = toString.replace(/[^0-9]/g, ""),
countArrayStr = phoneNumber.split(""),
numberVar = countArrayStr.length,
closeStr = countArrayStr.join("");
if (numberVar == 10) {
var phone = closeStr.replace(/(\d{3})(\d{3})(\d{4})/, "$1.$2.$3"); // Change number symbols here for numbers 10 digits in length. Just change the periods to what ever is needed.
} else if (numberVar > 10) {
var howMany = closeStr.length,
subtract = (10 - howMany),
phoneBeginning = closeStr.slice(0, subtract),
phoneExtention = closeStr.slice(subtract),
disX = "x", // Change the extension symbol here
phoneBeginningReplace = phoneBeginning.replace(/(\d{3})(\d{3})(\d{4})/, "$1.$2.$3"), // Change number symbols here for numbers greater than 10 digits in length. Just change the periods and to what ever is needed.
array = [phoneBeginningReplace, disX, phoneExtention],
afterarray = array.splice(1, 0, " "),
phone = array.join("");
} else {
var phone = "invalid number US number";
}
return phone;
}
phoneNumber("1234567891"); // Your phone number here
Für US-Telefonnummern
/^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/
Lassen Sie uns diesen regulären Ausdruck in kleinere Fragmente unterteilen, um leicht verständlich zu sein.
/^\(?
: Bedeutet, dass die Telefonnummer mit einem optionalen (
beginnen kann.(\d{3})
: Nach dem optionalen (
müssen 3 Ziffern vorhanden sein. Wenn die Telefonnummer keinen (
hat, muss sie mit 3 Ziffern beginnen. Z.B. (308
oder 308
.\)?
: Bedeutet, dass die Telefonnummer nach den ersten 3 Ziffern einen optionalen )
haben kann.[- ]?
: Als nächstes kann die Telefonnummer nach -
einen optionalen Bindestrich ()
) haben, falls vorhanden oder nach den ersten 3 Ziffern.(\d{3})
: Dann müssen noch 3 numerische Ziffern vorhanden sein. ZB (308)-135
oder 308-135
oder 308135
[- ]?
: Nach dem zweiten Satz von 3 Ziffern kann die Telefonnummer einen weiteren optionalen Bindestrich (-
) enthalten. ZB (308)-135-
oder 308-135-
oder 308135-
(\d{4})$/
: Schließlich muss die Telefonnummer mit vier Ziffern enden. Z. B. (308)-135-7895
oder 308-135-7895
oder 308135-7895
oder 3081357895
.
Referenz :