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

248
Visualizações
Comprobando si antes del enlace hay un texto específico (regex)

Estoy tratando de extraer todos los enlaces de un sitio web que tiene "Volumen", "Volumen 1" o "Volumen 1:" antes del enlace real. Actualmente, con el código que tengo (consulte a continuación), obtendrá todos los enlaces, incluidas imágenes, emojis y otras cosas.

Nota: en este momento, solo está seleccionando los enlaces y no se enfoca en las etiquetas ni nada, pero si tuviera que verificar el "volumen" o similar, también tendría que verificar las etiquetas (por ejemplo, volumen 1 <a href='liink'> )

Páginas que puede usar para probar: 0 , 1 , 2

Actualmente, tengo este código:

 const urlRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/\/=]*)/g; document.querySelector(".inner").outerHTML.match(urlRegex);

Selecciona el elemento inner y obtiene todo su HTML en una cadena. Luego intentará analizar todos los enlaces de la cadena. Pero también incluye todas las imágenes y otras cosas que no quiero aparte de los datos reales (volúmenes).

Si está confundido acerca de lo que quiero, entonces, por ejemplo, tenemos esto:

 <br>volume 1 <a ... /a><br> <br>image <a ... /a><br>

Solo quiero obtener el enlace del volumen 1. Hay alguna manera de prevenirlo?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe colocar la coincidencia deseada entre una búsqueda anticipada positiva y una búsqueda retrospectiva positiva:

 let html = `<br>volume 1 <a href="https://www.google.com" /a><br>\n<br>image <a href="https://www.facebook.com" /a><br>` let links = html.match(/(?<=volume.*?href=\").*?(?=\")/ig); console.log(links);

Expresión explicada:

  • (?<=...) es una mirada positiva hacia atrás. Afirma que lo que sigue está precedido por lo que va dentro (el ... , que es volume.*?href=\" en la expresión anterior).
  • volume coincide con la palabra "volumen" literalmente. Tenga en cuenta que todas las coincidencias aquí no distinguen entre mayúsculas y minúsculas debido a la marca i al final.
  • .*? coincide con cualquier carácter cero o más veces, sin ser codicioso. Por lo tanto, coincidiría con cualquier carácter hasta llegar a la siguiente expresión.
  • href=\" coincide con href=" literalmente.
  • .*? de nuevo, coincide con cualquier carácter entre cero y un número infinito de veces sin codicia.
  • (?=\") es una anticipación positiva. Afirma que lo que viene antes es seguido por " .

Puede encontrar una explicación aún mejor aquí: https://regex101.com/r/SOB1Gi/1 .

En resumen, esta expresión coincide con cualquier enlace que aparece después de la palabra volumen.

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