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

133
Views
¿Cómo escribir un RegEx que capture una parte de una cadena, a menos que la cadena termine con un patrón determinado?

Empecé a estudiar RegexOne, y hay un ejercicio en el que debemos capturar una parte de una cadena hasta el "." , siempre que la cadena termine con .pdf

 match file_a_record_file.pdf match file_yesterday.pdf skip testfile_fake.pdf.tmp

Pero quería profundizar un poco más y capturar esta parte de una cadena, a menos que la cadena contenga más de 3 caracteres después de un carácter de punto "."

Traté de usar

 ^(\w+(?!([.](.{4,}))$))

pero por supuesto que no funcionó. ¿Cómo podría corregir este patrón, considerando la biblioteca JavaScript RegEx? (No quiero una función, solo un patrón, si eso es posible). Supongo que sería más flexible si pudiera evitar usar $, pero aceptaría cualquier respuesta que coincida con la pregunta. Gracias a todos de antemano.

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

0

Puede verificar si no hay más de 4 caracteres sin puntos después de un punto.

 ^(?!.*\.[^\.\n]{4})\w+(?:\.\w+)*$

Demostración de expresiones regulares

 const regex = /^(?!.*\.[^\.\n]{4})\w+(?:\.\w+)*$/; [ "file_a_record_file.pdf", "file_yesterday.pdf", "testfile_fake.pdf.tmp", "testfile_fake.docx.tmp" ].forEach(s => { console.log((regex.test(s) ? "Match: " : "No match: ") + s); });

Si desea que la parte antes del pdf termine en pdf, puede usar un grupo de captura y hacer coincidir .pdf al final.

 ^(?!.*\.[^\.\n]{4})(\w+(?:\.\w+)*)\.pdf$

Demostración de expresiones regulares

 const regex = /^(?!.*\.[^.\n]{4})(\w+(?:\.\w+)*)\.pdf$/; [ "file_a_record_file.pdf", "file_yesterday.pdf", "testfile_fake.pdf.tmp", "testfile_fake.docx.tmp" ].forEach(s => { const m = s.match(regex); if (m) { console.log(m[1]); } });

about 4 years ago · Juan Pablo Isaza Report

0

Creo que esto es lo que estás tratando de hacer:

 mySting.match(/(.*)\.pdf$/) Match file_a_record_file.pdf Match file_yesterday.pdf null testfile_fake.pdf.tmp

Editar: la cadena sin la extensión se almacena en mySting.match(/(.*)\.pdf$/)[1]

Para la coincidencia de 3 caracteres después del primer punto

 myString.match(/^([^\.]+)\.[\w]{1,3}$/);

Explicación: haga coincidir todo lo que no sea un punto + haga coincidir el primer punto + haga coincidir una palabra que contenga de 1 a 3 caracteres al final de la cadena

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!