Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

134
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda