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

301
Visualizações
Usando expresiones regulares cómo realizar una coincidencia de cadena para obtener un formato de fecha diferente

Tengo dos formatos dateString como :date-f1:+2 y :date-f2:-1 , si la cadena entrante está en formato date-f1:+2 , necesito consola.log como procesadoDate.format("YYYY- MM-DD"), pero si la cadena entrante está en formato :date-f2:-1 , necesito console.log comoprocessedDate.format("DD/MM/YYYY"). Intenté lo siguiente, pero obtuve una excepción Cannot read properties of null (reading '1')" , alguien podría aconsejarme;

 let dateString = ":date-f1:+2"; // or ":date-f2:-1" function datesParse(dateString) { let matchFormat = dateString.match(/^:date-f1:(|):date-f2:(?:([\-\+])([0-9]+)+)?$/); let processedDate = moment(); if (matchFormat[1] === "-") { processedDate = processedDate.subtract(matchFormat[2], 'days'); console.log("Date::"+processedDate.format("DD/MM/YYYY")); } else if (matchFormat[1] === "+") { processedDate = processedDate.add(matchFormat[2], 'days'); console.log("Date::"+processedDate.format("DD/MM/YYYY")); } else if (matchFormat[1] === "-") { processedDate = processedDate.subtract(matchFormat[2], 'days'); console.log("Date::"+processedDate.format("YYYY-MM-DD")); } else if (matchFormat[1] === "+") { processedDate = processedDate.add(matchFormat[2], 'days'); console.log("Date::"+processedDate.format("YYYY-MM-DD")); } } datesParse(dateString);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Modifiqué su expresión regular y también agregué grupos de captura con nombre, pruebe esto: /^:date-(?<word>f[12]):(?:(?<operator>[-+])(?<number>[0-9]+)+)?$/gm

Prueba aquí: https://regex101.com/r/cNNHA5/1

Con los grupos de captura puedes acceder fácilmente a cada uno de esos elementos capturados:

 let line = ':date-f1:+2'; let pattern = /^:date-(?<word>f[12]):(?:(?<operator>[-+])(?<number>[0-9]+)+)?$/gm let match = pattern.exec(line) console.log('word', match.groups.word) console.log('operator', match.groups.operator) console.log('number', match.groups.number)

y utilícelos para verificar como:

 if (dateString.includes(match.groups.word) && dateString.includes(match.groups.operator))

por lo que no tiene que crear vars word y operator adicionales.

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