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

300
Views
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 answers
Answer question

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 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!