Tengo un número de teléfono (teléfono) que se enviará a un punto final de API a través de una solicitud PUT. Antes de enviar a la API, quiero formatearlo.
Casos:
1)
Phone number: 0321 1234567 Send to API like: +3553211234567 Phone Number: +355 321 1234567 Send to API like: +3553211234567 Phone Number: +3553211234567 Send to API like: +3553211234567Entonces, lo que tengo que hacer es:
1- eliminar espacios vacíos
para esto estoy usando:
phone.replace(/[^+\d]+/g, "")elimine todo excepto + (para códigos de países) y dígitos.
2- verifique si el número de teléfono comienza con 0. Si es cierto, reemplácelo con +355.
¿Cómo puedo hacer esto en Javascript? Gracias de antemano.
Puede usar dos reemplazos, uno para 0 a +355 y otro para espacios. Para obtener solo el primer 0, use ^0 , que coincidirá solo si el primer carácter es 0.
let phones = ['0321 1234567','+355 321 1234567','+3553211234567', '0103 1234500'] phones.forEach(phone => { phone = phone.replace(/^0/,'+355') phone = phone.replace(/\s/g,'') console.log(phone) })Probablemente opté por una solución demasiado difícil aquí, pero ¿qué hay de hacer coincidir los últimos 10 dígitos y unirlos nuevamente?
const str = '+355 321 1234567'; const array = [...str.matchAll(/\d(?!(?:.*\d){10})/g)]; console.log('+355' + array.join(''));También puede usar una función de devolución de llamada con reemplazar y capturar el cero al principio en el grupo 1, o hacer coincidir 1 o más caracteres de espacio en blanco usando (^0)|\s+
En la verificación de devolución de llamada para el grupo 1. Si está allí, agregue +355 , de lo contrario, una cadena vacía.
Código de ejemplo
let regex = /(^0)|\s+/g; [ "0321 1234567", "+355 321 1234567", "+3553211234567" ].forEach( s => console.log( s.replace(regex, (m, g1) => g1 ? "+355" : "")) );Salida para los 3
+3553211234567