javascript - probar - expresiones regulares online
Expresión regular para reformatear un número de teléfono de EE. UU. En Javascript (7)
Estoy buscando reformatear (reemplazar, no validar, hay muchas referencias para validar) un número de teléfono para mostrar en Javascript. Aquí hay un ejemplo de algunos de los datos:
- 123 4567890
- (123) 456-7890
- (123)456-7890
- 123 456 7890
- 123.456.7890
- (en blanco / nulo)
- 1234567890
¿Hay alguna manera fácil de usar una expresión regular para hacer esto? Estoy buscando la mejor manera de hacer esto. ¿Hay una mejor manera?
Quiero volver a formatear el número a lo siguiente: (123) 456-7890
Aquí hay uno que aceptará números de teléfono y números de teléfono con extensiones.
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
Estoy usando esta función para formatear números de EE. UU.
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
Acepta casi todas las formas imaginables de escribir un número de teléfono de EE. UU. El resultado se formatea a una forma estándar de (987) 654-3210 x123
Para números telefónicos de EE. UU.
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
Vamos a dividir esta expresión regular en fragmentos más pequeños para que sea fácil de entender.
-
/^/(?
: Significa que el número de teléfono puede comenzar con una opción(
. -
(/d{3})
: después de la opción(
debe haber 3 dígitos numéricos. Si el número de teléfono no tiene un(
, debe comenzar con 3 dígitos, por ejemplo(308
o308
. -
/)?
: Significa que el número de teléfono puede tener una opción)
después de los primeros 3 dígitos. -
[- ]?
: A continuación, el número de teléfono puede tener un guión opcional (-
) después)
si está presente o después de los primeros 3 dígitos. -
(/d{3})
: Entonces debe haber 3 dígitos numéricos más. Ej.(308)-135
o308-135
o308135
-
[- ]?
: Después del segundo conjunto de 3 dígitos, el número de teléfono puede tener otro guión opcional (-
). Ej.(308)-135-
o308-135-
o308135-
(/d{4})$/
: Finalmente, el número de teléfono debe terminar con cuatro dígitos. Ej.(308)-135-7895
o308-135-7895
o308135-7895
o3081357895
.Referencia:
Solución posible:
var x = ''301.474.4062'';
x = x.replace(//D+/g, '''')
.replace(/(/d{3})(/d{3})(/d{4})/, ''($1) $2-$3'');
Suponiendo que quiere el formato " (123) 456-7890
":
function formatPhoneNumber(phoneNumberString) {
var cleaned = ("" + phoneNumberString).replace(//D/g, '''');
var match = cleaned.match(/^(/d{3})(/d{3})(/d{4})$/);
return (!match) ? null : "(" + match[1] + ") " + match[2] + "-" + match[3];
}
Aquí hay una versión que incluye el código internacional +1
opcional:
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
/^/(?(/d{3})/)?[- ]?(/d{3})[- ]?(/d{4})$/
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;
}
}
Ejemplo de trabajo here .