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

143
Views
Regex para capturar una cadena entre una cadena en una matriz en js

Si tenemos la siguiente cadena:

"hukhkhk\nClosing Date: Friday 22nd April 2022\nwdwqdwqdwqd\nClosing Date: Friday 22nd April 2023\newdewfewf"

y queremos obtener las 2 fechas "Friday 22nd April 2022" y "Friday 22nd April 2023"

¿Cómo hago para recuperar una matriz de todas las cadenas capturadas usando js?

[ "Friday 22nd April 2022", "Friday 22nd April 2023" ]

Hay un problema en mi expresión regular, pero no estoy seguro de cómo solucionarlo para que no coincida con todo lo que se encuentra entre el primer \n que encuentra:

(?<=Closing Date:\s)(.*)(?=\\n)

https://regexr.com/6k2uf

El js que probé es este:

 var reg = new RegExp('(?<=Closing Date: )(.*)(?=\\n)/g'); reg.exec("hukhkhk\nClosing Date: Friday 22nd April 2022\nwdwqdwqdwqd\nClosing Date: Friday 22nd April 2023\newdewfewf")
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Un enfoque alternativo para sus datos de ejemplo, y cualquier dato con un marcador fácilmente definible para el texto requerido, sería split los datos en una matriz de líneas (marcadas en \n ), aplicar un filter de matriz a la matriz para eliminar elementos no que contiene la cadena de marcador y, finalmente, .map la matriz para que contenga solo la parte requerida que sigue a la cadena de marcador.

Los procesos se pueden unir en una sola línea como se demuestra en el siguiente fragmento:

 string = "hukhkhk\nClosing Date: Friday 22nd April 2022\nwdwqdwqdwqd\nClosing Date: Friday 22nd April 2023\newdewfewf"; markerString = "Closing Date: "; datesArray = string.split('\n').filter(text => text.indexOf(markerString) > -1).map(text => text.slice(text.indexOf(markerString)+ markerString.length)); console.log(datesArray)

about 4 years ago · Juan Pablo Isaza Report

0

(?<=Closing Date: )(.*?)(?=\\n)

Empieza a coincidir después de la Closing Date: (espacio incluido)

Deja de coincidir antes del primer \n que encuentra

Esto funcionó en tu ejemplo

ejemplo en vivo

about 4 years ago · Juan Pablo Isaza Report

0

Editar:

  1. Tuve que eliminar group names (no se usaban y marcaban una gran diferencia en el tiempo de ejecución)
  2. filtrado de cadenas vacías (@input edge) como resultado de split()
 const input = "hukhkhk\\nClosing Date: Friday 22nd April 2022\\nwdwqdwqdwqd\\nClosing Date: Friday 22nd April 2023\\newdewfewf"; const regex = /(?:(?:\\n|^).*?(?:\\n|$))(?:Closing\sDate:\s)?/mg const dates = input.split(regex).filter(date => date.length > 0); console.log(dates);

Afuera:

 [ 'Friday 22nd April 2022', 'Friday 22nd April 2023' ]

1ra respuesta:

Usando expresiones regulares para encontrar todo el contenido sin fecha:

 const re = /(?<junk>(?:\\n|^).*?(?:\\n|$))(?<delimiter>Closing Date: )?/gm

Luego, use JS split para obtener una matriz solo con fechas

 const dates = input.split(re);
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!