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

306
Views
Regex para filtrar dos condiciones: una tras otra

Digamos que tengo la cadena example_photo_name1.png y example_photo_name2.png . Quiero eliminar todo después de primero . y todo antes del ultimo _ . El resultado esperado es name1 y name2 .

Podría eliminar todo después de la primera . usando el patrón (.*)\.[^\.]*$ . Sin embargo, no sé cómo eliminar todo antes del último _ . ¿Cómo puedo hacer esto?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Podrías usar el patrón (?<=_)(?!.+_).+(?=\.)

Explicación del patrón:

(?<=_) - mirar atrás positivo - afirmar que lo que precede es un guión bajo

(?!.+_) - anticipación negativa - afirmar que lo que sigue no contiene ningún guión bajo (por lo que estamos seguros de que estamos justo detrás del último guión bajo)

.+ - coincide con uno o más de cualquier carácter

(?=\.) - afirma lo que sigue es un punto .

Demostración de expresiones regulares

El texto combinado será exactamente lo que desea.

about 4 years ago · Juan Pablo Isaza Report

0

Algo como esto podría funcionar:

 const string = 'example_photo_name1.png'; string.replace(/^.*_(.*?)\.[^.]*$/, '$1');

Si desea que el prefijo xxx_ y el sufijo .xxx sean opcionales, puede envolverlos en grupos que no capturan y agregar el cuantificador adecuado:

 /^(?:.*_)?(.*?)(?:\.[^.]*)?$/

De esta manera cadena como:

 hello_world => world world.jpg => world
about 4 years ago · Juan Pablo Isaza Report

0

El (.*)\.[^\.]*$ patrón tuyo (usado con .replace y $1 ) elimina el último . y el resto de la cadena.

Puedes usar

 text = text.replace(/^.*_|\..*/g, '')

Vea la demostración de expresiones regulares . Detalles :

  • ^.*_ - comienzo de una cadena, cualquier cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible, y luego un carácter _
  • | - o
  • \..* - un punto y luego cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible

Vea una demostración de JavaScript:

 const texts = ['example_photo_name1.png', 'example_photo_name2.png']; const re = /^.*_|\..*/g; for (const text of texts) { console.log(text, '=>', text.replace(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!