Tout d'abord, il ne sera pas aussi simple que le remplacement du texte dans une seule chaîne, car un paragraphe typique sera composé d'un ou plus de nœuds de texte et d'éléments qui doivent être traversés correctement afin d'envelopper efficacement le morceau de texte souhaité. Vous ne devriez pas avoir le texte avec quelque chose comme innerText/textContent ou innerHTML.
Essayez ceci:
var para = jQuery('#my-para')[0];
findMatchAndReplace(
para,
/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/i,
'<a href="$&">$&</a>'
);
Cette fonction:
function findMatchAndReplace(node, regex, replacement) {
var parent,
temp = document.createElement('div'),
next;
if (node.nodeType === 3) {
parent = node.parentNode;
temp.innerHTML = node.data.replace(regex, replacement);
while (temp.firstChild)
parent.insertBefore(temp.firstChild, node);
parent.removeChild(node);
} else if (node.nodeType === 1) {
if (node = node.firstChild) do {
next = node.nextSibling;
findMatchAndReplace(node, regex, replacement);
} while (node = next);
}
}
double possible de [remplacer l'URL avec des liens HTML javascript] (http: //stackoverflow.com/questions/37684/replace-url-with-html-links-javascript) – 4imble