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

264
Views
JavaScript: cómo reducir los IF con REGEX

Estoy trabajando en la siguiente función a la que tuve que agregar algunos IF en caso de que la cadena fuera más corta que el formato que esperaban los grupos REGEX:

 function getFormatedCPF(unformatedValue) { const onlyDigits = unformatedValue.toString().replace(/[^\d]/g, "").substring(0, 11); if (onlyDigits.length > 9) return onlyDigits.replace(/(\d{3})(\d{3})(\d{3})/, "$1.$2.$3-"); if (onlyDigits.length > 6) return onlyDigits.replace(/(\d{3})(\d{3})/, "$1.$2."); if (onlyDigits.length > 3) return onlyDigits.replace(/(\d{3})/, "$1."); return onlyDigits; }

¿Hay alguna manera de eliminar los IF y obtener el mismo resultado solo con Regex? Estoy buscando algo como: completo: 999.999.999-99 parcial: 999.999.9 Porque se llamará a la función cuando la persona esté escribiendo.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puedes usar

 const rx = /^(\d{3})(\d{1,3})?(\d{1,3})?(\d{1,2})?.*/; $('body').on('input', '.val', function(e) { this.value = this.value.replace(/\D+/g,'') .replace(rx, (_,w,x,y,z) => z ? `${w}.${x}.${y}-${z}` : y ? `${w}.${x}.${y}` : x ? `${w}.${x}` : w); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input class="val" />

Tenga en cuenta que ^(\d{3})(\d{1,3})?(\d{1,3})?(\d{1,2})?.* regex coincide y captura en el Grupo 1 todos tres dígitos (de lo contrario, no tiene sentido agregar . ), luego uno, dos o tres dígitos se capturan en un Grupo 2 opcional (un dígito debe estar allí, o de nuevo, no hay necesidad de insertar un separador), lo mismo ocurre con Grupo 3 y solo hay uno o dos dígitos que se capturan en el Grupo 4. El .* al final coincide con todo lo que queda para recortarlo.

El reemplazo se realiza dentro de una función de flecha, donde el texto de reemplazo se crea dinámicamente, según el grupo que coincida o no.

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!