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

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

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 Denunciar

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