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

146
Vistas
Regex agrega ceros iniciales a la cadena DD.MM.YYYY

Estaba seguro de que algo como esto había sido respondido antes de alguna manera, sin embargo, solo logré encontrar versiones invertidas como MM/DD/YYYY, etc. o caracteres especiales como / - y tuve poca suerte al convertirlos ya que mi conocimiento de expresiones regulares es terrible.

El hilo más cercano que encontré fue este

¿Estoy luchando por encontrar un enfoque limpio usando expresiones regulares y javascript para agregar ceros finales al formato de cadena a continuación?

 dd.mm.yyyy

Por ejemplo, 1.1.1998 => 01.01.1998 || 10.1.1998 => 10.01.1998

mi enfoque actual está en la línea de

 const addLeadingZeros = (input: string) => { return input.replace(/.([1-9])(?!\d)/g, '.0$1'); }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Qué tal si:

 input.replace(/(?<=^|\.)(\d)(?=\.|$)/g, '0$1');

Significa: "reemplazar todos los dígitos precedidos por el comienzo de una línea o un punto y seguidos por un punto o el final de la línea". Este ejemplo solo funciona para las partes de día y mes.

Ejemplo (salidas de la consola del navegador):

 "01.01.1998".replace(/(?<=^|\.)(\d)(?=\.|$)/g, '0$1'); ← "01.01.1998" "1.01.1998".replace(/(?<=^|\.)(\d)(?=\.|$)/g, '0$1'); ← "01.01.1998" "1.1.1998".replace(/(?<=^|\.)(\d)(?=\.|$)/g, '0$1'); ← "01.01.1998"

( Nota: esta no es una solución que recomiendo particularmente, solo me concentré en el punto solicitado).

about 4 years ago · Juan Pablo Isaza Denunciar

0

Mi solución:

 const addLeadingZeros = (input: string) => { return input.replaceAll(/\d*(?<![\d])[\d](?=[.])/g, '0$&'); }

La expresión regular: \d*(?<![\d])[\d](?=[.])

Puedes encontrar la explicación al respecto aquí .

explicación

 const addLeadingZeros = (input) => { return input.replaceAll(/\d*(?<![\d])[\d](?=[.])/g, '0$&'); } console.log(addLeadingZeros('01.02.3456')) console.log(addLeadingZeros('1.2.2001')) console.log(addLeadingZeros('01.2.1234')) console.log(addLeadingZeros('1.12.1998')) console.log(addLeadingZeros('3.04.2021')) console.log(addLeadingZeros('5.6.01')) console.log(addLeadingZeros('5.06.01')) console.log(addLeadingZeros('05.6.01')) console.log(addLeadingZeros('7.8.1')) console.log(addLeadingZeros('7.08.1')) console.log(addLeadingZeros('07.8.1'))

about 4 years ago · Juan Pablo Isaza Denunciar

0

También puede usar esta expresión regular /^\d\.|(?<=\.)\d\./g seleccionará el primer número y el número después del primer punto, por lo que solo seleccionará la fecha y el mes en su formato.

Puedes usar esto como el siguiente código

 let regex = /^\d\.|(?<=\.)\d\./g; console.log("8.8.2014".replace(regex, str => `0${str}`)); console.log("25.06.2014".replace(regex, str => `0${str}`)); console.log("9.06.2014".replace(regex, str => `0${str}`)); console.log("08.7.2014".replace(regex, str => `0${str}`)); console.log("1.1.1998".replace(regex, str => `0${str}`));

ahora te lo explico parte por parte

expresiones regulares

La expresión regular está rota por un | que le dice que coincida con la expresión anterior o posterior.

La primera parte es ^\d\. , si conoce los conceptos básicos de expresiones regulares, sabrá que significa ver si hay un número justo después del cual hay un punto al principio, selecciona la fecha si solo hay un dígito que la represente.

La segunda parte es (?<=\.)\d\. , esta parte primero ve si hay un punto antes de la cadena que se va a seleccionar, luego ve si solo hay un número después y luego un punto. Seleccionará el mes si solo hay un dígito que lo represente.

Aquí la primera parte (?<=.) le dice a Java que busque el punto pero no lo seleccione, si no hay un punto antes del número, no seleccionará la cadena.

Ahora, la última parte g hace que seleccione cada instancia de cadena que coincida.

Entonces, para el primer ejemplo, selecciona las cadenas "8". y "8".

.reemplazar

.replace es una función de cadena que toma dos argumentos, primero la cadena/regex para hacer coincidir, en mi código es una expresión regular.

El segundo es una cadena o una devolución de llamada que devuelve una cadena, en mi código es una devolución de llamada.

La devolución de llamada puede obtener un argumento que es la cadena coincidente.

Luego agrego el "0" antes de la cadena coincidente con una cadena de plantilla.

Entonces la salida final es

 08.08.2014 25.06.2014 09.06.2014 08.07.2014 01.01.1998

Espero que mi explicación haya ayudado. Es posible que me equivoque en algunos lugares, ya que todavía estoy aprendiendo y uso expresiones regulares o incluso la devolución de llamada de reemplazar con poca frecuencia. Espero que no haya habido muchos errores. Si me equivoco en alguna parte, por favor háganmelo saber.

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