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

119
Vistas
Encuentre un conjunto de números después de una cadena sin usar lookbehind

Me he estado rascando la cabeza desde hace bastante tiempo. Estoy tratando de obtener el conjunto de números después de cierta cadena usando Regex. Estoy usando la búsqueda positiva hacia atrás, pero no es compatible con muchos navegadores. Entonces, ¿hay alguna manera de construir un patrón para esto sin usar lookbehind ?

De los siguientes ejemplos, solo quiero obtener los números después de la cadena Test , por lo que solo debería ser 12345 y 67891 . Esto es multilínea.

Cadena 1:

 Test 12345

Cadena 2:

 Test 12345, 67891 Sample 0101, 0202

Este es el patrón que usé para ambos ejemplos con lookbehind:

 /(?<=Test )\d+|(?<=, )\d+/gm
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si entiendo correctamente, desea hacer coincidir solo los números en la línea que comienza con "Prueba", y no en ninguna otra línea. Y puede tener uno o dos números separados por comas. Si desea hacer coincidir los números y usarlos para algo, use, por ejemplo:

 str.match(/Test (\d+)(?:, (\d+))?/m);

Coincide con la cadena "Prueba" seguida de un grupo de dígitos de captura, seguido opcionalmente de un grupo no seguidor que consta de una coma, un espacio y otro grupo de dígitos de captura.

Esto produce:

 const str1 = "Test 12345"; const str2 = "Test 12345, 67891\nSample 0101, 0202"; str1.match(/Test (\d+)(?:, (\d+))?/m); // -> ['Test 12345', '12345', undefined, index: 0, input: 'Test 12345', groups: undefined]

Esta es una matriz de 3 elementos: el primer elemento es la coincidencia completa, que no necesita en este caso. El resto de los elementos son uno o dos grupos de dígitos coincidentes. Esto significa que puede obtener su respuesta usando:

 str1.match(/Test (\d+)(?:, (\d+))?/m).slice(1).filter(Boolean); // -> ['12345']

Del mismo modo, para la cadena multilínea:

 str2.match(/Test (\d+)(?:, (\d+))?/m).slice(1).filter(Boolean); // -> ['12345', '67891']

También podría capturar primero las líneas que desea y luego sacar los números, e incluso podría tener más líneas y números coincidentes por línea:

 "Test 12345, 234, 23, 45\nSample 2, 5, 4\nTest 12" .match(/^Test .+$/mg) .map(line => line.match(/\d+/g)) .flat(); // -> ['12345', '234', '23', '45', '12']
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