Tengo un requerimiento, mi cliente me envía una cadena. para los enlaces, envía el título del enlace entre corchetes y el enlace con corchetes. como abajo,
[Google](https://www.google.com/)
Necesito obtener ese valor y hacer que se pueda hacer clic en Google . agregando como a continuación y reemplazándolo con el texto original.
<a href = "' + title + '" target="_blank">' + url + '</a>'
¿Alguien puede sugerir una mejor manera de hacer esto con expresiones regulares de JavaScript?
Se parece al formato de Markdown , por lo que podría usar una biblioteca de rebajas como Marked para analizarlo y representarlo:
const s = '[Google](https://www.google.com/) '; document.getElementById('content').innerHTML = marked(s); <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script> <div id="content"></div>Se puede hacer con la función de reemplazo de cadena.
Regex: /\[(.*)\]\s*\((.*)\)/g
Sustituto: <a href = "$2" target="_blank">$1</a>
const str = `Lorem ipsum. [Google](https://www.google.com/). Sample text.` const output = replaceWithLinks(str); console.log(output); function replaceWithLinks(str) { return str.replace(/\[(.*)\]\s*\((.*)\)/g, '<a href="$2" target="_blank">$1</a>') }En archivo HTML:
<h1 id="header"></h1>En archivo Js:
const myString = "[Google](https://www.google.com/)"; const show = myString.match(/\[(.*?)\]/); // it return two things. The first is with bracket and the second one is without bracket you have to use without bracket. const url = myString.match(/\((.*?)\)/); document.getElementById("header").innerHTML = `<a href="${url[1]}" target="_blank">${show[1]}</a>`;Tienes que usar expresiones regulares. Para obtener información sobre expresiones regulares, lea MDN .
Obtenga el primer valor de índice y muéstrelo a la interfaz de usuario.