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

87
Visualizações
Agregar año si falta en Regex y Javascript

Obtengo la fecha completa del campo de date . Quería, si se encuentra la fulldate de fecha completa, usarla de lo contrario, usar el mes con palabras, en este caso el 29 de noviembre. En mi código a continuación, 2019 ya está allí, por lo que debe usarse.

La salida esperada debería ser como POR EJEMPLO

 2019-11-29T12:00:00.000Z 

 let date = "0 Hi Nov 29 HELLO - 29112019"; let months = "(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"; let regex = new RegExp(months + " \\d{1,2}(?: \\d{4})?"); const result = date.match(regex).match(/ \d{4}$/) ? date.match(regex).match(/ \d{4}$/) : moment( date.match(regex) + " " + new Date().getFullYear() ).toDate() || ""; console.log(result);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

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

0

Debe pasar la fecha en el formato reconocible .

Aquí hay una posible solución:

 let date = "0 Hi Nov 29 HELLO - 21112019"; let months = "(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"; let regex = new RegExp("(?:.*\\D)?((?:0?[1-9]|[12]\\d|3[01])(?:0?[1-9]|1[0-2])(?:19|20)\\d{2})|" + months + "\\s+(\\d{1,2})(?:\\s+(\\d{4}))?"); let match = date.match(regex); if (match) { if (match[1]) { console.log(moment(match[1], "DDMMYYYY").format("YYYY-MM-DD[T]HH:mm:ss[Z]")); } else { if (match[4] === undefined) { match[4] = new Date().getFullYear() } console.log(moment(`${match[2]} ${match[3]} ${match[4]}`, "MMM DD YYYY").format("YYYY-MM-DD[T]HH:mm:ss[Z]")); } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

Tenga en cuenta que el patrón se verá como (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+(\d{1,2})(?:\s+(\d{4}))? , y coincidirá con el nombre del mes en el Grupo 1, el día en el Grupo 2 y el año, si está presente, en el Grupo 3. \s+ coincide con uno o más espacios en blanco. Si el Grupo 3 no coincide, match[2] no estará definido y podrá reemplazarlo con el año actual.

El MMM significa el nombre del mes en la configuración regional establecida por moment.locale() .

Tenga en cuenta que el patrón que está utilizando no tiene límites en ambos lados y puede coincidir como parte de una subcadena más larga. Por lo tanto, tiene sentido hacerlo más preciso al menos con límites de palabras:

 let regex = new RegExp("\\b" + months + "\\s+(\\d{1,2})(?:\\s+(\\d{4}))?\\b");

O bien, con un límite de palabra al principio y un (?!\d) anticipado al final (para asegurarse de que no haya otros dígitos después del día/año):

 let regex = new RegExp("\\b" + months + "\\s+(\\d{1,2})(?:\\s+(\\d{4}))?(?!\\d)");
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