Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

242
Visualizações
Enmascaramiento de número de teléfono (sin complemento)

Estoy tratando de enmascarar el teléfono usando el ejemplo en este enlace , pero sin éxito. Lo que quiero hacer es eliminar los paréntesis y reordenar.

Regla: el primer carácter siempre es 5. En forma de 3 3 2 2, ejemplo: 532 123 45 67

 const $input = document.querySelector('[data-js="input"]') $input.addEventListener('input', handleInput, false) function handleInput (e) { e.target.value = phoneMask(e.target.value) } function phoneMask (phone) { return phone.replace(/\D/g, '') .replace(/^(\d)/, '($1') .replace(/^(\(\d{3})(\d)/, '$1) $2') .replace(/(\d{3})(\d)/, "$1-$2") .replace(/(-\d{4})\d+?$/, '$1'); }

Lo siento por informar mal los bloques en la primera publicación. No se debe permitir la entrada de nuevos personajes al finalizar.

Los bloques serán los siguientes: 3 3 2 2 / Ejemplo: 532 123 45 67

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Regex puede ser complicado, pero me encanta lo bueno que es el resultado :)

 function phoneMask (phone) { return phone.replace(/\D/g, '') .replace(/(^[^5])/, '') .replace(/(\d{3})(\d)/, '$1 $2') .replace(/(\d{3}\s\d{3})(\d{1,2})/, '$1 $2') .replace(/(\d{3}\s\d{3}\s\d{2})(\d{1,2})/, '$1 $2') .replace(/(\d{3}\s\d{3}\s\d{2}\s\d{2})\d+?$/, '$1') }

Pasos explicados:

  1. Para permitir solo números, reemplace los no dígitos con una cadena vacía: .replace(/\D/g, '')
  2. Permita solo 5 al principio, así que reemplace el primer dígito que no es 5 por una cadena vacía: .replace(/(^[^5])/, '')
  3. Haz 2 grupos: el primero con 3 dígitos y agrega un espacio entre ellos: .replace(/(\d{3})(\d)/, '$1 $2')
  4. Después de tener 3-espacio-3 dígitos, agregue otro espacio entre ese grupo y el resto: .replace(/(\d{3}\s\d{3})(\d{1,2})/, '$1 $2')
  5. Después de tener 3-espacio-3-espacio-2 dígitos, agregue otro espacio entre ese grupo y el resto: .replace(/(\d{3}\s\d{3}\s\d{2})(\d{1,2})/, '$1 $2')
  6. Una vez completada la secuencia 3-espacio-3-espacio-2-espacio-2-dígitos, termine la cadena: .replace(/(\d{3}\s\d{3}\s\d{2}\s\d{2})\d+?$/, '$1')
about 4 years ago · Juan Pablo Isaza Relatório

0

Hay una manera más fácil :

1- Eliminar cualquier carácter que no sea un número

2- Formatea los números como "3 4 2 2" (o de cualquier otra forma)

 phone = '+ (123) 45678901'; phone = phone.replace(/[^0-9]+/gim, ''); phone = phone.replace(/^([0-9]{3})([0-9]{4})([0-9]{2})([0-9]{2})$/, '$1 $2 $3 $4');
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda