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

217
Visualizações
Extraiga el valor del atributo href de <a> si contiene una palabra clave específica

¿Cómo es posible obtener el enlace completo de una cadena como esta?

 <a href="https://www.google.com/setprefdomain?prefdom=DE&amp;prev=https://www.google.de/&amp;sig=K_DtcF1dnV7Xn6g9Ir_3SUs6a6TiA%3D">

Quiero aislar la cadena que comienza después de 'href="' y termina en 'A%3D', pero solo si esta cadena contiene el domain de cadena.

Realmente no sé cómo verificar si la cadena 'dominio' está incluida.

Mi expresión regular hasta ahora es: /(?<=href=")(.*)(?=")/gi

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

0

Me encantan las expresiones regulares, pero prefiero no analizar html válido con ellas por cuestiones de estabilidad.

Utilice una técnica de análisis legítima para aislar el atributo href . Esto asegurará que nunca haga coincidir accidentalmente data-href o cualquier otro atributo que comparta las letras consecutivas href . Esto también libera la carga de tener que hacer coincidir la posibilidad de comillas simples o comillas dobles.

Después de aislar el atributo href, use include( includes() o indexOf() para verificar si domain está en alguna parte del valor de la cadena. Si necesita aumentar la precisión del domain coincidente, ahora puede considerar el uso de expresiones regulares con límites de palabras u otras comprobaciones en las subcadenas circundantes (como comprobar si el domain aparece antes que el primero ? ).

 const str = '<a href="https://www.google.com/setprefdomain?prefdom=DE&amp;prev=https://www.google.de/&amp;sig=K_DtcF1dnV7Xn6g9Ir_3SUs6a6TiA%3D">', url = new DOMParser() .parseFromString(str, 'text/html') .documentElement.querySelector('a') .href; console.log(url.includes('domain') ? url : null);


Para aquellos que piensan que analizar la etiqueta de anclaje válida es demasiado trabajo para una cadena construida de manera confiable, entonces pueden usar regex como atajo (pero probablemente no lo haría en una aplicación profesional).

Use un espacio literal (o límite de palabra - \b ) antes de href para asegurarse de que está apuntando al atributo correcto y no haciendo una coincidencia parcial en un atributo más grande. Voy a suponer que se garantiza que la cadena de entrada esté entre comillas dobles, así que haga coincidir la cadena entre comillas dobles. Dentro de las comillas dobles, haga coincidir uno o más caracteres que no sean comillas dobles (con avidez), luego la palabra buscada domain y luego uno o más caracteres que no sean comillas dobles (con avidez). Esto devolverá la URL aislada si califica y eliminará algunos casos marginales que podrían dañar el resultado.

 let str = `<a class="domain" data-dummy-href="example.com" href="https://www.google.com/setprefdomain?prefdom=DE&amp;prev=https://www.google.de/&amp;sig=K_DtcF1dnV7Xn6g9Ir_3SUs6a6TiA%3D" style="background-image: url('http://www.example.com/domain/123.png')">`; console.log(str.match(/ href="([^"]+domain[^"]+)"/i)[1] || 'Not valid');

Si domain puede aparecer al principio o al final del valor href, cambie respectivamente + a * para cambiar el calificador de "uno o más" a "cero o más".

about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que la respuesta de @ jscrip puede ser la forma más directa. Alternativamente, puede verificar si la cadena incluye la cadena 'dominio' antes de hacer coincidir la expresión regular. Por ejemplo:

 let str = '<a href="https://www.google.com/setprefdomain?prefdom=DE&amp;prev=https://www.google.de/&amp;sig=K_DtcF1dnV7Xn6g9Ir_3SUs6a6TiA%3D">' let href = str.includes('domain') ? str.match(/(?<=href=").*(?=")/)[0] : 'Not valid' console.log(href)

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