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

141
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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