Tengo un bloque de código HTML que tiene alrededor de 156 enlaces a sitios web. ¿Cómo hago para convertir el enlace en un enlace HTML?

https://siteA.com/xyA.
https://siteB.com/xyB.
https://siteC.com/xyC.
https://siteD.com/xyD.

Quiero convertir estos enlaces anteriores a:

<a href="https://siteA.com/xyA" target="_blank">https://siteA.com/xyA</a>
<a href="https://siteB.com/xyB" target="_blank">https://siteB.com/xyB</a>
<a href="https://siteC.com/xyC" target="_blank">https://siteC.com/xyC</a>
<a href="https://siteD.com/xyD" target="_blank">https://siteD.com/xyD</a>

Lo único común en cada uno de estos enlaces "https: //" al principio y un punto "." al final. Esperaba que al encontrar una solución, pudiéramos usarlos como un identificador.

FYI: No he jugado con expresiones regulares. Yo uso Visual Studio Code y Notepad ++ como mi IDE

Cualquier ventaja es apreciada.

Tx

0
bitFlip 17 oct. 2019 a las 21:50

3 respuestas

La mejor respuesta

(https:\/\/.*?\..*?)\. debe reemplazarse por <a href="$1" target="_blank">$1</a> con cualquier herramienta que use.

Explicación:

https:\/\/ debe ser claro, ¡ya que es literal!

.*?\..*?\. coincidirá con su nombre de dominio y cualquier cosa hasta un segundo literal .

La expresión completa se colocará entre paréntesis para capturar el nombre de dominio como un grupo y se reemplazará en la segunda expresión regular.

0
csabinho 21 oct. 2019 a las 21:17

Soy nuevo en el desarrollo y esta es mi primera respuesta. No entiendo lo que quieres decir con "https: //" y "". como identificadores? Entonces, lo que hice es básicamente asumir que tenía un bloque de código en algún lugar de su página .html:

    <code id="codeBlock">
     https://siteA.com/xyA.
     https://siteB.com/xyB.
     https://siteC.com/xyC.
     https://siteD.com/xyD.
    </code>
    <div id="linkOutput"></div>

El archivo JavaScript divide el contenido del bloque de código, elimina los espacios en blanco y todo eso y luego crea las etiquetas de enlace que desea y las muestra nuevamente en el archivo HTML (hice eso más para mostrar que el código funcionó).

//get data from the HTML <code> block
//filter out whitespace
var data = [];
data = document
    .getElementById("codeBlock")
    .innerHTML.split(/\s+/)
    .filter(e => e.length > 1);

for (var i = 0; i < data.length; i++) {
    //create <a> tag and set attributes
    var para = document.createElement("a");
    para.setAttribute("href", data[i]);
    para.setAttribute("target", "_blank");
    var node = document.createTextNode(data[i]);
    para.appendChild(node);
    //append it to HTML front end
    document.getElementById("linkOutput").appendChild(para);
}

/*
got some inspiration here:
https://blog.abelotech.com/posts/split-string-into-tokens-javascript/
https://www.w3schools.com/js/js_htmldom_nodes.asp
*/

¡Espero que esto ayude!

-1
rodger 17 oct. 2019 a las 19:56

Si presiona Ctrl+H en vscode que abrirá el panel de búsqueda y reemplazo, ingrese (.*)\. en la entrada de búsqueda, habilite la alternancia regex e ingrese <a href="$1" target="_blank">$1</a> en la entrada de reemplazo. Debería poder reemplazarlos todos a la vez.

enter image description here

La expresión regular (.*)\. toma cualquier cosa en la línea que termine con un punto y coloca la url (sin punto) en un grupo de captura. En el reemplazo, usamos $1 para insertar el grupo de captura nuevamente en el texto de reemplazo.

0
GammaGames 17 oct. 2019 a las 19:00