Tengo una descripción a continuación, que estoy tratando de reemplazar los enlaces en los accesorios href con enlaces s3 firmados en el backend sin DOM
Entonces, primero necesito recorrer todos los enlaces s3 coincidentes y reemplazarlo con uno firmado.
El problema es que reemplaza otras partes también. No sabe cuándo terminar el emparejamiento.
Esto es lo que estoy tratando de hacer,
function replaceNonSignedS3WithSignedLink(text) { const urlRegex = /(https?:\/\/[^\s]+)/g; return text.replace(urlRegex, function(url) { return 'https://signed-s3-link.com'; }) // or alternatively // return text.replace(urlRegex, '<a href="$1">$1</a>') } const desc = `<h3>Introduction Session</h3><p>Monday, March 3, 2021 11:00AM - 01:00PM</p> Click <a href='https://example.s3.amazonaws.com/assets/bio.pdf'>here</a>`; const result = replaceNonSignedS3WithSignedLink(desc); console.log(result)El resultado que obtengo es,
"<h3>Introduction Session</h3><p>Monday, March 3, 2021 11:00AM - 01:00PM</p> Click <a href='https://signed-s3-link.com"Me equivoqué con el enlace que coincide con la expresión regular, esto parece funcionar para mi caso.
let i = 0; function urlify(text) { var urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; return text.replace(urlRegex, function(url) { if (url.includes('s3')) return 'https://signed-s3-link.com' + ++i; // I can process individual link here return url; }) } var text = `<h3>Introduction Session</h3><p>Monday, March 3, 2021 11:00AM - 01:00PM</p> Click <a href='https://example.s3.amazonaws.com/assets/bio.pdf'>here</a> <a href = 'https://hello.com'>Hi</a>`; var html = urlify(text); console.log(html)