Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

263
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda