Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

240
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!